Ať už je PHP vaše denní rutina nebo jen koníček, měli byste zbystřit. Nová verze 5.4 přináší spoustu užitečných změn a odstraňuje zbytečnosti.
Po téměř třech letech vyšla další významná verze skriptovacího jazyka PHP, tenkrát 5.4. Zvyšuje rychlost, přináší nové možnosti a zjednodušuje zápis polí. Místy navíc dolaďuje předchozí verzi PHP 5.3 z léta 2009.
Nové možnosti
- Zjištění průběhu nahrávání souboru – pomocí session lze zjistit, kolik procent souboru bylo nahrálo; již tedy není nutné spoléhat například na flashové doplňky
- Součástí E_ALL je konečně také E_STRICT
- Zkrácený tvar při vytváření polí: $a = [1, 2, 3, 4]; nebo $a = ['one' => 1, 'two' => 2];
- json_encode() – JSON_PRETTY_PRINT dokáže vypsat obsah v lépe čitelném tvaru, při použití JSON_UNESCAPED_SLASHES nebudou přidána zpětná lomítka před standardní lomítka a JSON_NUMERIC_CHECK zajistí převod číselných řetězců na čísla
- Možnost dereference: foo()[0]
- Anonymní funkce (closures) podporují $this
- Zápis <?= je již vždy dostupný; bez ohledu na nastavenou hodnotu short_open_tag
- Zápis binárního formátu, např. 0b001001101
- Vylepšeny chybové zprávy a varování při nekompatibilních argumentech
- Podpora „Traits“
- OpenSSL podporuje AES
- SNM má objektové API
- Přidáno $_SERVER['REQUEST_TIME_FLOAT'] udávající čas s přesností na mikrosekundy
Na webu se dočtete další podrobnosti ohledně nových možností.
Zpětná (ne)kompatibilita
Před přechodem na novou verzi věnujte čas k nastudování nekompatibilních změn. Zde je seznam těch nejdůležitějších:
- Safe mode již není podporovaný (v PHP 5.3 byl ve výchozím nastavení vypnutý)
- Odstraněny algoritmy Salsa10 a Salsa20
- get_magic_quotes_gpc() a get_magic_quotes_runtime() vždy vrací hodnotu FALSE
- Změna chování isset() a empty() při práci s řetězci
- Převod pole na řetězec nyní vyvolá varování E_NOTICE
- Pokud do funkce array_combine() předáte dvě prázdná pole, nově je vráceno array(), namísto FALSE
- Zavrženými funkcemi se nově stávají: mysql_list_dbs(), get_magic_quotes_gpc(), get_magic_quotes_runtime() a mcrypt_generic_end()
Další podrobnosti naleznete v seznamu nekompatibilních změn a informacích o přechodu na novou verzi.
Vyšší výkon
Na webu vývojářů také naleznete několik testů, které porovnávají PHP 5.3 a PHP 5.4. V některých případech došlo až k 50 % zrychlení. Jen okrajově, ternární operátor je nyní při vracení polí mnohem výkonnější (operace již neprovádí přímo nad poli), zrychlení se dočkal Zend Engine, funkce unserialize() a výkonnější je také zpracování požadavků FastCGI.
Vývojáři opravili desítky chyb, všemožných změn a nových možností a parametrů je více než dost. Důkladně si proto projděte seznam úprav, kde naleznete všechny potřebné informace. Mezi nimi například i tu, že PHP 5.4 je poslední verze, která podporuje Windows XP a 2003.
A jak už bývá zvykem, nyní budou půl roku vycházet záplaty a po dalším půl roce začne být nová verze 5.4.x zajímavá pro reálné nasazení. Na běžných webhostinzích se začne objevovat opět pomalu, takže na opravdový přechod je ještě minimálně rok a půl čas.