Rozhodli sme sa sprístupniť Vám najnovšie PHP 7 na webhostingovom servery. Prinášame Vám članok o zmenách a novinkách v php 7.
Tvorcovia PHP sa rozhodli prepracovať dátove štruktúry, vďaka čomu
je php7 výrazne rýchlejšie a menej pamäťovo náročne. Detailnejšie informácie o
implementácií nájdete na stránke https://wiki.php.net/phpng-int.
Ake novinky nám prináša PHP 7 ?
Typová kontrola pro skalárne datové typy
Okrem vyššieho výkonu je asi najväčšia zmena typová kontrola.
Uvedieme si rovno aj príklad:
<?php
function add(int $a, int $b) {
return $a + $b;
}
add(1, 3);
V prípade, že funkcii predáme neplatné premenné, dostávame chybu: Argument 2 passed to add() must be of the type integer, string given, called in …
Kontrola dátových typov nie ja automatická, je potrebne ju na začiatku súboru uviest:
<?php
declare(strict_types = 1);
Po zapnutí sú dátove typy kontrolované aj pri volaní štandartných funkcií.
<?php
declare(strict_types = 1);
substr(123, 2); //substr() expects parameter 1 to be string, integer given
V prípade zmeny na dátovy typ float, prebieha automatická zmena z int na float. Opačne to však nefunguje.
Typy návratových hodnôt
Ďalšou novinkou v PHP7 je možnosť definovať typ navratovej hodnoty už pri definícií funkcie.
<?php
function foo(): array {
return [];
}
Pokiaľ sa rozhodneme porušiť zadefinovanú návratovu hodnotu, dostaneme chybu o nesprávnom type návratovej hodnoty.
Výnimky namiesto FATAL errorov
V prípade nekompatibilných typov premenných dostávame výnimku a nie Fatal error (Uncaught TypeException). Pokial by výnika dedila od Exception, bolo by tažké identifikovať niektoré chyby. Preto vznikol nový typ výnimiek EngineException.
Prehodnotenie E_STRICT errorov
V php7 boli jednotlivé strict chyby prehodnotené a bud zrušené, alebo boli nahradené E_DEPRECATED, E_NOTICE alebo E_WARNING
Null Coalesce Operator ??
<?php
var_dump($_GET[‚user‘] ?? ‚nobody‘); // string(6) „nobody“
Takýto výraz vracia „nobody“ aj v prípade, ak index premennej GET neexistuje. Ak by sme použili operator ? Dostali by sme Notice o nedefinovanom indexe.
Nový porovnávací operátor – Spaceship
Porovnávací operator vracia bud 0 v prípade zhody, -1 ak je prvy menší a 1 ak je prvý väčší.
<?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
Generátor kryptograficky bezpečných náhodných čísel (CSPRNG)
Vygenerovať náhodné číslo bolo možné len pomocou openssl_random_pseudo_bytes() alebo mcrypt_create_iv(), obe funkcie sú dostupné len po doinštalovaní rozšírenia. Preto v PHP7 vznikli dve nové funkcie:
random_bytes(int length);
random_int(int min, int max);
Anonymné triedy
V novom php7 môžeme vytvárať anonymné triedy:
<?php
$instance = new class(‚foo‘) {
public $i;
public function __construct($i) {
$this->i = $i;
}
};
var_dump($instance); // object(class@anonymous)#1 (1) { [„i“]=> string(3) „foo“ }
Nové PHP 7 nám prináša zopár vylepšeni výrazne zrýchlenie. Tešíme sa na reakcie prvých používatelov.
Martin Mráz
Administrator www.speedweb.sk