V současné době aktuální verze PHP3 dosáhla svého 11. vydání, které obsahuje hlavně opravy některých drobných chybiček předchozích verzí a jak se zdá, bude to jedno z posledních vydání. Pozornost vývojářů se totiž soustředila na nové PHP4, které právě vychází v betaverzi a které obsahuje úplně nový engine jazyka, Zend.
Zend oznámili jeho autoři (členové týmu PHP) někdy v lednu tohoto roku a od té doby netrpělivě čekám (a myslím, že nejenom já) na jeho veřejné uvolnění. Interpret PHP můžeme chápat jako 2 relativně samostatné části – samotné jádro jazyka, zodpovědné za načtení a vykonání kódu programu, a vestavěné knihovny funkcí. A právě Zend nahrazuje ve čtyřkové verzi staré jádro interpretu. Proč vlastně ? Pravdou je, že staré jádro jazyka nebylo zrovna optimální co do rychlosti běhu kódu a spotřeby paměti. Pokud píšete pouze malé skripty, které neprovádí příliš mnoho výpočtů a cyklů (často prostě jen zavoláte nějakou SQL query a vytisknete výsledek), tak to ani nepoznáte – váš kód stráví pravděpodobně většinu času vykonáváním některých vestavěných funkcí, které jsou psány v C a proto dostatečně rychlé. Pokud ale píšete v PHP složitější věci, pak zjistíte, že kód je vykonáván opravdu pomalu, v některých případech i pomaleji než v ASP. Také práce s pamětí byla neefektivní – ve skutečnosti docházelo k uvolňování prostředků, které použil váš PHP kód, až při ukončení běhu interpretu. To se může nepříjemně projevit nejenom v případě komplexních skriptů, ale i u intenzivně navštěvovaných webů.
Proto dali pánové Zeev Suraski a Andi Gutmans hlavy dohromady :) a napsali zgruntu nový interpret skriptů, který dali k dispozici OpenSource komunitě a který se kromě „motoru“ pro PHP má stát i skriptovacím modulem pro psaní uložených procedur v MySQL (celkem pěkná myšlenka psát skripty pro web i pro databázi ve stejném jazyku). Výsledek (dle autorů) stojí za to. Když budu parafrázovat oficiální informace z webu Zendu, bylo dosaženo maximální možné rychlosti vykonávání kódu. Podívejte se sami na výsledky několika testů, které srovnávají běh kódu mezi starým a novým PHP a mezi ASP a PHP4.
Kromě zvýšení rychlosti a zdokonalení správy paměti (Zend dělá klasické počítání referencí na alokovanou paměť) doznalo jádro jazyka některých drobných změn, zejména při práci s objekty a s poli – nová syntaxe vám umožní přístup k objektu v objektu a k poli v poli. Také můžete odkazovat na jednu proměnnou více identifikátory přiřazením reference $var1 = &$var2
, volat funkci před její definicí, „bufferování“ výstupu (po volání ob_start()
se začne veškerý výstup ukládat do bufferu, a vy se rozhodnete, zda jej nakonec pustíte ven ob_end_flush()
nebo zrušíte ob_end_clean()
. Veškeré HEADER informace se nebufferují, tzn. pomocí této techniky můžete posílat cookies a ostatní headery kdekoliv uvnitř kódu.) a v neposlední řadě má Zend integrovaný debugger s klasickými možnostmi break-pointů a prohlížení proměnných za běhu. Toto vše a několik dalších zde nezmíněných novinek dělá z PHP opět trochu dospělejší systém, se kterým se můžete pustit i do opravdu rozsáhlých projektů, přesto však by mělo být PHP4 100% kompatibilní s předchozí verzí (i když z některých nových vlastností vyplývá nutnost drobných úprav kódu).
Je zde ještě jedna podstatná vlastnost Zendu – v brzké době by měl být k dispozici kompilátor PHP skriptů do bytového kódu (podobný princip jako v javě), který by se měl vykonávat podstatně rychleji (ubude úvodní parsing kódu při každém spuštění interpretu), zabere méně místa (alespoň si to myslím) a samozřejmě nebude čitelný a upravitelný v běžném editoru. To nám umožní distribuci PHP aplikací bez rizika zneužití kódu zákazníkem ( ono i v době OpenSource revoluce se někteří z nás musí programováním živit, protože nic jiného neumí :) ) a u opravdu rozsáhlých projektů by to mělo být znát i na celkovém zabraném místě, což není k zahození, pokud máte providerem omezený rozsah pro hosting. Bohužel jsem jej neměl možnost vyzkoušet, zdá se, že v nové distribuci PHP tento nástroj není obsažen. A je docela možné, že kompilátor Zendu bude pouze pro platící – alespoň jsem něco takového zahlédl na mateřském webu projektu Zend.
Náš miniseriál o PHP končí. Díky za všech 5 ohlasů :)), chápu, že ti, co PHP dobře znají a používají zde nenašli příliš nového. O PHP budu na ROOTovi psát i dále, tentokrát už spíše tematicky zaměřené články. Připravuji něco o dynamickém generování obrázků a VRML (!!!) a také se budu snažit vyhledávat a recenzovat knihovny kódu pro PHP a celé aplikace vhodné k převzetí a přizpůsobení, psané v PHP. Byl bych rád, kdybyste mi napsali o svých projektech v PHP nebo o tom, co by vás zajímalo a o čem bychom zde měli psát.