PHP 7 novinky a zmeny

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.

php webhosting

 

 

 

 

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

Vlastný webhosting

Vlastný webhosting