čtvrtek 9. listopadu 2006

PHP 5.2

Tak nám vyšla nová verze PHP 5.2, která by měla vylepšit rychlost přímo v ZEND Engine.

Koukal jsem se na změny a je pravda, že pár věcí se zde pohlo k lepšímu. Otázkou však zůstává, zda se z toho paskvilu a neuspořádaného vývoje, v kterém se PHP ocitá dokáže ještě vymanit.

Microsoft sám začal mít o PHP zájem alespoň v podpoře .NET, ale jeden nikdy neví, kam to může zajít (InnoDB v MySQL vs. Oracle).
Jsou zde opravené některé věci, jako např. v abstraktní třídě nemůže existovat statická metoda, magická metoda __toString() nemůže vyhazovat výjimku apod.

Ale co mě stále štve na PHP je ta ignorace type hinting, s tím související přetěžování metod či konstruktorů, dále vyhazování výjimek z php funkcí namísto stupidního Boolean, nemožnost smysluplně vytvořit Singleton, apod.

Pokud se podívám na způsob práce s databází, je často zdůrazněna dobrá podpora MySQL, ale k čemu mi je taková vynikající podpora, když zde nemám pořádný nástroj na ORM, DAO, apod. (např. Hibernate v Jave). Je zde sice jakýsi Propel, ale... Jako standard to bráno není a asi ani nikdy nebude. (Ono MySQL by samo potřebovalo opravit pár věcí, kterými se honosí verze 5. Alespoň integrace nějakého smysluplného jazyka pro psaní stored procedure. V tomto nynějším stavu je to na cvokárnu.)
Jsem zvědavý jaké změny nám přinese PHP 6.0. Těším se zejména na věci jako definování návratových hodnot v metodách, přímou integraci s MySQL a s tím spojený jistý nárůst rychlosti.

Ale na druhou stranu zůstávám skeptický v tom, jestli se PHPko někdy pročistí a vzniknou frameworky, které budou standardem pro práci s danou vrstvou. Pokud ovšem PHP bude i nadále ignorovat type hinting, čistý oop model, zastaralé metody, způsob definování názvů metod, balíčkovací systém pro třídy, apod. tak nikdy nevzniknou frameworky, nikdy se nic nestane standardem a nikdy nebude ničím jiným než jazykem pro lamy :(

2 komentáře:

  1. > vyhazování výjimek z php funkcí namísto stupidního Boolean
    Návratová hodnota PHP funkce nesvědčí o tom, jestli došlo k chybě, ale jestli funkce uspěla. Např. pokus o vyhledání podřetězce může skončit neúspěchem, aniž by došlo k jakékoliv chybě. Chyby jako `E_WARNING` vyvolává PHP nezávisle - je to podobný koncept jako výjimky a pomocí `set_error_handler` je lze na výjimky triviálně přeložit.

    OdpovědětVymazat
  2. Netvrdím, že výjimky lze použít úplně všude. To je samozřejmě nesmysl. Např. u metody isActive() budu vrace boolean hodnotu. Výjimku bych měl ale vyhazovat např. u metody parse()
    Jak jsem psal, vadí, že funkce v PHP vracejí mixovaný typ (Boolean, jiny typ), to si nemyslím, že by byl dobrý způsob, už z důvodu přehlednosti.
    Někdy potřebuji zjistit, že pokud funkce neuspela, tak proč neuspěla a co mi říká chybová zpráva, to návratovou hodnotou false nikdy nezjistím.
    Ten tvůj způsob samozřejmě možný je, ale otázkou zase zůstává, zda budu u všech metod vyhazovat výjimky, nebo je ručně upravovat, já nevím, přijde mi, že tohle by mělo být navrženo už od tvůrců jazyka a nikoli tak, abych to musel pracně definovat.

    OdpovědětVymazat

Když programátor založí a řídí firmu

Jako malý jsem chtěl být popelářem. Ani ne tak proto, že bych měl nějaký zvláštní vztah k odpadkům, ale hrozně se mi líbilo, jak...