Portál AbcLinuxu, 3. května 2025 03:01
Předem tohoto zápisku upozorňuji, že píši částečně pod vlivem emocí. Prostě se mi nelíbí, co se s PHP za poslední čas děje a jak s ním nakládají sami jeho tvůrci.
Spolu s PHP jsme už pěkných pár let. Používal jsem ho často a kupodivu jsem ho často používal také jako shellový jazyk. Napsal jsem v něm poměrně dost. Začínal jsem na PHP verze 3. Když přišlo PHP verze 4, zjistil jsem, že pár věcí je trošku jinak, ale nic tragického a skripty jsem opravil během hodinky. Přechod na PHP 4 byl jednoznačně krokem vpřed. No, ale teď jsem pokouším už pár měsíců používat verzi 5 a prskám. Opravdu prskám jako křeček a ptám se, jaké mindráky autory PHP asi vedly.
Abyste rozumněli, než jsem vyzkoušel PHP 5 mohl jsem se na PHP spolehnout. A to tak, že absolutně. Nikdy mi nepadlo, nikdy mi neudělalo nic neočekávaného, prostě paráda. Možná jsem měl i trochu štěstí, že jsem nepíchl někam, kde by PHP mělo slabé místo.
Ale co s PHP 5? Přišlo a spoustu věcí totálně přeoralo. Sice objekty dostaly nový háv a celkově jsou lepší, výjimky jsem taky přijal s nadšením. (Pravda, objekty ve stylu opsané od Javy jakožto staticky typoveného jazyka mi v PHP, což je dynamicky typovaný jazyk připadají trochu špatný nápad, ale to je jen můj subjektivní dojem). Jenže skoro v každé podverzi PHP 5 jsou některé věci trochu jinak. Autoři PHP jakoby si se mnou hráli dobroudružnou hru typu najdi co se změnilo. Jednou změní závislosti nějaké knihovny, aniž by v dokumentaci popsali, podruhé zakážou nějakou syntaxi, která předtím fungovala, atd..
Poslední rána nastala, když jsem zkoušel nové progresívní rozhraní pro databáze typu PDO. Abyste rozumněli, prostě jsem se potřeboval napojit na MS SQL 2005. Rozhraní pro mssql nefungovalo. Rozhraní pro ODBC fungovalo, ale rozhodl jsem se zkusit PDO, což je teď dost doporučované databázové rozhraní pro PHP, které je psané přímo v C. Nebudu napínat. Zjistil jsem, že když pošlu chybný SQL dotaz, zbuchne Apache a z debugovacích zpráv jde vysledovat, že pointer zapisoval do paměti, kam neměl. Po pár pokusech zbuchnul Apache už i na správném SQL dotazu, k rozkladu celé knihovny asi docházelo poměrně rychle. Zdůrazňuji, že celé rozhraní PDO pro ODBC je označeno jako stable! Jen by mě zajímalo, kdo to testoval, když mě to zbuchlo za prvních pět vteřin testování.
Pak přišel skoro happy end, poslední verze PHP 5.1.2 a v changelogu vidím opravené memory leaky v PDO. Tak nedočkavě stáhnu a PDO opravdu nepadá. Tak jsem se ponořil do manuálu a začal studovat PDO. No nic moc knihovna, návrhem prostě běžný průměr. Ale líbilo se mi, že bylo možné procházet data pomocí foreach. Vzal jsem tedy a napsal něco podobného:
$conn = new PDO('dsn string','login','heslo'); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM cosi"; foreach ($conn->query($sql) as $data) var_dump($data);
A liboval si jak to krásně chodí. Vypsalo to všechny řádky. Ale na konci jsem spatřil něco se tam být nemělo. Hlášení o neodchycené výjimce, která mi sdělovala, že je na konci seznamu řádků. Zaklel jsem a pochopil jsem, že s PDO už nikdy nechci mít nic společného. Proboha, je přeci jasné, že foreach dojede na konec, tak proč autory PDO napadlo vyhazovat výjimku? To jako po mě chtějí, aby kvůli jejich blbosti každý foreach uzavíral do try catch bloku? Navíc jsem si všimnul, že foreach nejel řádky od začátku, ale prostě od současné pozice. PDO je zkrátka nedomyšlená jako prase a naprogramovaná tak, že by se za ní dalo stydět.
A teď přišel skutečný happy end. Napsal jsem si knihovnu obdobnou PDO sám. Bylo to celkem jednoduché a použil jsem tam vše, co se mi z PDO líbilo. Dokonce i s foreach to funguje (aspoň že interface Iterator funguje v PHP jak má). Nevyhazuje foreach na konci výjimku a navíc foreach vždy jede řádky od začátku. Výjimky to vyhazuje skutečně tam, kde má, tedy při chybě. A pořád mám na mysli nevyslovenou otázku. Když já sám, který se za odborníka v PHP nepovažuji jsem schopen napsat dobře fungující knihovnu obdobnou PDO za dvě hodiny, proč autoři PHP vypouštějí a ještě propagují do světa takové nedodělky?
Ale vlastně jsem ani tak o PDO psát nechtěl. PDO byla jen taková poslední kapka neustálého číhání, co zase autory PHP napadlo přeorat, překopat, změnit, nestabilnit, samozřejmě za halasného vysvětlování, jako vedou PHP k lepším zítřkům a zářivé budoucnosti. Někdy mi přijde, že i ten Micosoft se v těch nejhorších chvílích choval přeci jen kapku kamarádštěji. Není vůbec divu, že dnes, kdy PHP verze 5 už je tu s námi pár let stále ještě podle statistik naprostá většina webů jede na PHP verze 4. Nedivím se a plně to chápu. Upřímně řečeno, mám pocit, že nejefektivnější přechod z PHP 4 není na verzi 5, ale na něco ve stylu Java, Pythom, Ruby. Statistiky plně potvrzují, že lidem se na PHP 5 přecházet nechce.
Mám za pár dní napsat pár skriptů v PHP a rozchodit je pod Microsoftím IIS, pod kterým běhají věci pro mnoho zákazníků. Věřte mi, začínám se bát, nevěřím už stabilitě PHP ani co se za nehet vejde a začínám uvažovat, zda by se to přeci jen nedalo napsat v ASP, které snad server neshodí. A pokud tam půjde PHP, tak silně uvažuji o tom, PHP verze 5 to asi nebude. Přestávám PHP věřit.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.