Vývoj PHP 6

Školení, která pořádám

Článek vyšel v rámci PHP okénka na serveru Root.cz.

Sotva vyšlo PHP 5.1 a v kuchyni už se delší dobu vaří další velká verze. Skoro všichni významní vývojáři jádra PHP se 11. a 12. listopadu 2005 sešli na konferenci v Paříži a probrali, jakým směrem se má ubírat vývoj PHP 6. Derick Rethans z toho vytvořil precizní závěry a já zase nabízím jejich souhrn.

Unicode

Asi nejméně kontroverzní jsou změny v Unicode, které má být hlavní novinkou PHP 6 a o kterém už jsem stručně psal.

Odstraněné vlastnosti

Spoustě lidí spadne kámen ze srdce a spoustě lidí se ztíží přechod na novou verzi odstraněním některých vlastností.

Zachované obraty

Některé sporné obraty naproti tomu budou zachovány:

Přidané novinky

Do jazyka přibudou i některé často diskutované novinky:

Zamítnuté novinky

Další novinky se naopak do jazyka nedostanou:

Závěr

Většinu změn je určitě možné hodnotit pozitivně. Unicode je nesporným přínosem, byť bude nutné chování jednotlivých kódování stejně jako u databází nejprve pečlivě nastudovat. Pozitivně lze hodnotit i odstranění konfiguračních direktiv, které ve většině případů hlavně u začínajících programátorů způsobovaly víc zmatku než užitku. Některé změny mi ale připadají poněkud samoúčelné ve snaze jazyk vyčistit, ovšem za cenu pomalého a bolestného přechodu. Je s podivem, že při pohledu na pomalý přechod na PHP 5 (způsobenou ale hlavně důležitou změnou objektového modelu) se vývojáři chtějí pouštět do takových kousků jako je zbytečná změna výchozího hodnoty parametru u podružné funkce nebo odstranění čtyři roky doporučované syntaxe na úkor té, která byla označena jako zastaralá. Snaha o vyčištění jazyka se tak podle mého názoru ubírá ne zcela správným směrem – řada programátorů by spíše uvítala upozornění na potenciálně nebezpečné chování (jako je přiřazování prvků do neinicializovaného pole nebo do nedeklarovaných vlastností) nebo větší jednoznačnost jazyka (rozlišením operátorů pro přístup ke znakům řetězce a prvkům pole), zkrátka jeho lepší předvídatelnost. Místo toho ale např. dojde k tomu, že spolu se sjednocením parsování parametrů funkcí (všimněte si, že v současných verzích např. wordwrap("abc", "b") informaci o špatném typu parametrů vypíše, ale substr("abc", "b") ne) bude chybová hláška o nepřevoditelnosti na správný typ potlačena.

Cesta do vydání PHP 6 je nicméně ještě dlouhá a za tu dobu se ještě může leccos změnit.

Jakub Vrána, Ze zákulisí, 5.12.2005, diskuse: 7 (nové: 0)

Diskuse

ATom:

Škoda, že se neuvažuje o klíčovém slovu u vlastností objektu, které by zabránilo jejich serializaci. Tedy obdobě transient z Javy. Tohle mi dost chybí.

Megaloman:

Pokud jde o směřování PHPčka, mohlo se udělat mnohem víc, namátkou:

Nekonzistentní pojmenování funkcí - pro začátek by stačilo vytvořit konzistentní systém názvů funkcí a ponechat původní jako aliasy (pro zpětnou kompatibilitu).
Unicode - proč UTF-16 a ne UTF-8?
Rekurze - základy programování...
Zlepšení práce s datovými typy - zavedl bych možnost (ne povinnost) explicitně uvádět datový typ, jako u jiných vyšších jazyků.

A celkově by prospělo mít nějaký konkrétní cíl, kam směřovat, než jen reagovat na požadavky komunity, i když to je samozřejmě potřeba. Takhle to působí mírně chaoticky.

Kromě toho doufám, že dojde k mírnému zrychlení...

ikona Jakub Vrána OpenID:

UTF-16 proto, že ho používá knihovna ICU, kterou PHP využívá. V našich zeměpisných šířkách by by bylo lepší UTF-8, ale v Asii je zase lepší UTF-16.

Co máš na mysli výkřikem "Rekurze"?

Možnost uvádět datový typ by leckdo uvítal, já jsem to jako Proof-of-Concept udělal: http://php.vrana.cz/napovidani-skalarnich-typu.php (ne, že by to bylo v praxi použitelné). Ale je asi pravda, že do dynamicky typovaného jazyka napovídání typů nepatří.

Na zrychlení bych nesázel.

ikona David Grudl:

Ke zrychlení skutečně dojde! První verze PHP 6 bude na aktuálním HW běžet značně rychleji, než první verze PHP 5 na aktuálním HW.

ikona Jakub Vrána OpenID:

Já jsem to pochopil jako zrychlení vývoje, ale ono to spíš opravdu bylo o výkonu. Závěr je nicméně stejný.

ikona Ondra:

Prominte mi malé rýpnutí, ale článek je z 5.12.2005? Jak dlouho může trvat přepsat haldy funkcí do UTF-16....

Zvu vás na článek uvedený v URL.

ikona Insolvenční Ondra:

Tak máme dalšího půl roku pryč, a jediné reálně nasaditelné PHP 6 je zde:

http://bazen-shop.cz/zbozi/400/tepelne-ce…-6-elektron/

Nicméně. Spíše ze setrvačnosti jsem začal dělat jeden projekt (insolvenční rejstřík) na PHP, a se zlou jsem se potázal. Webová služba ISIR vrací výsledky v UTF, a pracovat s ní z PHP bylo opravdu za trest.

Diskuse je zrušena z důvodu spamu.

avatar © 2005-2024 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.