Nová verzia PHP prichádza vo verzii PHP 7. Určite si každý všimol, že sa nám niekde v číslovaní stratilo číslo 6, a to z toho dôvodu, že sa ho rozhodli vývojári preskočiť aby nedošlo k zmätkom keďže o PHP 6 už bolo napísané veľa článkov a kníh aj keď nikdy oficiálne nevyšla. Tiež nevydaná verzia PHP 6 mala priniesť podporu UNICODE.
Nová verzia PHP 7 je oveľa rýchlejšia. Je to vďaka prepracovaniu dátových štruktúr (phpng), veľkému refaktoringu a menšej pamäťovej náročnosti.
Typy návratových hodnôt
V PHP 7 je možné zapísať typ návratovej hodnoty priamo do definície funkcie. Ak funkcia vráti iný typ ako je zadefinovaný, tak PHP vráti chybu. Avšak je to závislé na nastavení declare(strict_types = 1);
<?php function foo(): array { return []; }
Typová kontrola pre skalárne dátové typy
V PHP sa dlho uvažovalo ako do neho pridať skalárne typy. Teraz už môžme zapísať definíciu ako príklade nižšie. V prípade neplatných dátových typov PHP vráti chybu „Argument 2 passed to add() must be of the type integer, string given, called in …“. Kontrola dátových typov avšak nie je zapnutá automaticky, ale je ju nutné ako v predchádzajúcom zapnúť pomocou declare(strict_types = 1);
<?php function add(int $a, int $b) { return $a + $b; } add(1, 3);
V prípade zapnutia typovej kontroly sú dátové typy kontrolované aj u štandardných PHP funkcií. V prípade INT na FLOAT konverzia prebehne automaticky, avšak opačne FLOAT na INT vyhodí chybu.
Vznik výnimiek (TypeException) namiesto FATAL ERROR
Veľa miest v PHP bolo upravených tak, aby namiesto FATAL ERROR, už vznikla výnimka. Avšak výnimka TypeException nededí od Exception. Je to z dôvodu aby nedochádzalo k neodhaleným chybám kedy by aj tieto výnimky automaticky boli podchytené kódom „catch (Exception $e)“. Preto v PHP 7 vznikol nový predok výnimiek EngineException pre všetky výnimky.
BaseException (abstract) +- EngineException +- ParseException +- Exception +- ErrorException +- RuntimeException +- ... +- ...
Null Coalesce Operátor ??
Operátor otestuje prvý operand, a ak existuje tak ho vráti, ak nie vráti druhý operand. Namiesto zápisu
var_dump(isset($_GET['user']) ? $_GET['user'] : 'nobody');
stačí už napísať
var_dump($_GET['user'] ?? 'nobody');
SpaceShip – nový porovnávací operátor
Je to nový trojcestný porovnávací operátor, ktorý pri zhode vracia 0, ak je prvý menší vráti -1 a ak je prvý väčší vráti 1.
<?php // http://3v4l.org/VDBof var_dump(1 <=> 1); // 0 var_dump(1 <=> 2); // -1 var_dump(2 <=> 1); // 1 var_dump(('a' <=> 'a')); // 0 var_dump(('a' <=> 'b')); // -1 var_dump(('b' <=> 'a')); // 1
CSPRNG – Generátor kryptograficky bezpečných náhodných čísel
Generovať dostatočne nepredikovateľné náhodné číslo nie je jednoduché. V PHP 7 pribudli dve funkcie na generovanie náhodných čísel a bajtov.
random_bytes(int length); random_int(int min, int max);
Iné
Mimo iné v PHP 7 pribudla možnosť vypnutia errorov a zapnutia výnimiek pre assert(). Pribudli nové rezervované typy : int, float, bool, string, true, false, null. A taktiež bolo implementované nové rozšírenie pre JSON.
Čo z PHP 7 vypadlo?
- Extension
ext/ereg
– nahradenáext/pcre
- Extension
ext/mysql
– nahradenáext/mysqli
aext/pdo_mysql
- Přiřazení
new
referencia:$a = & new Foo()
set_magic_quotes_runtime
,magic_quotes_runtime
- Možnost použití eval v
preg_replace
– nahradenépreg_replace_callback
- Komentáře začínající
#
vphp.ini
(správne je;
) - Warning pri nenastavenej časovej zóne
- PHP 4 konštruktory (metódy s rovnakým názvom ako je názov triedy) – nateraz DEPRACATED
- Alternatívne otváracie tagy
<%
a<script language=php>
(krátke<?
ostávajú)
Kde si nové PHP vyskúšať alebo prevádzkovať na ňom hosting?
Medzi webhostingové firmy na slovensku, ktoré už majú PHP 7 v ponuke partrí spoločnosť Webglobe – Yegon, s.r.o. www.webglobe.sk . V ich ponuke si na svojom novom hostingu môžete prepnúť verziu PHP na verziu 7, či už na celý hosting, alebo len pre testovanie napríklad na niektorej subdoméne.
Prajem veľa radosti s novým PHP 7.