Strona 1 z 1

Zmiany w PHP 7.1

: 30 cze 2016, 2:47
autor: Macsch15
Niedawno miała premierę druga odsłona alphy PHP 7.1.
Zmian jest sporo, a jeszcze więcej jest w trakcie debaty do zaimplementowania (RFC), całą listę można zobaczyć tutaj: https://wiki.php.net/rfc

Skupiając się jednak nad tym, co już wiadomo i co będzie w PHP 7.1:

Łapanie wielu wyjątków

Aktualnie żeby złapać parę wyjątków, przy czym niektóre z nich będą tak samo przechwytywane, musimy robić coś w tym stylu:

try 
{
    // ...
} catch (Exception $e) {
    // ...
} catch (AnotherException $e) {
    // będzie tak samo przechwytywany jak ten powyżej
} catch (RuntimeException $e) {
    // ten już będzie robił coś innego
}
 


Wraz z PHP 7.1, powyższa forma została skrócona

try 
{
    // ...
} catch (Exception | AnotherException $e) {
    // ...
} catch (RuntimeException $e) {
    // ...
}
 


Wsparcie dla nadawania widoczności stałych

Standardowo, wszystkie stałe const z klasy są publiczne i nic z tym nie można zrobić.
PHP 7.1 umożliwia nam ustawienie widoczności dla nich.


class ExampleClass
{
    // stała domyślnie publiczna
    const CONSTANT = true;
 
    
// stałe z ustawioną widocznością
    private const CONSTANT_ONE = 1;
    protected const CONSTANT_TWO = 2;
    public const CONSTANT_THREE = 3;
}
 


Void jako zwracany typ
Od wersji PHP 7, mamy możliwość dla każdej metody ustawić wartość która ma być zwracana, przykładowo:

class ExampleClass
{
    public function exampleMethod() : bool
    
{
        // ...
    }
}
 


Powyższa metoda musi zwrócić wartość boolean, w innym przypadku nastąpi TypeError.

W PHP 7.1 dodano nowy typ: void

class ExampleClass
{
    public function exampleMethod() : void
    
{
        return; // wszystko ok
    }
}
 


class ExampleClass
{
    public function exampleMethod() : void
    
{
        return true; // błąd
    }
}
 


Wsparcie dla negatywnych wartości w wielu funkcjach do obsługi tekstu

Przykładowo w natywnej funkcji PHP:
strrpos ( string $haystack , string $needle [, int $offset = 0 ] )


Mamy możliwość dodania negatywnej wartości do zmiennej $offset, ale już w funkcji strpos() nie możemy w zmiennej $offset używać wartości negatywnych co prowadziło do wykorzystywania funkcji substr() aby ten problem rozwiązać, co było mało czytelne i źle odbijało się na wydajności.

strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

If specified, search will start this number of characters counted from the beginning of the string. Unlike strrpos() and strripos(), the offset cannot be negative.


PHP 7.1 ma to zmienić i do wielu natywnych funkcji do manipulacji stringami pojawi się zmienna $offset z możliwością ustawienia negatywnej wartości.

Usprawnienia list()
Aktualnie jest możliwa zmiana tablicy do zmiennych, niestety, list() wspiera tylko numeryczny index tablicy, czyli coś takiego będzie działać:


$array 
= ['monkey', 'tree', 'banana'];

list(
$monkey, $tree, $banana) = $array;
 


Ale tablica w tej formie (z ustalonymi kluczami), już nie będzie działać:

$array 
= [
    'name' => 'Joe',
    'age' => 30
];
 


W PHP 7.1 możemy już zrobić coś takiego:
list('name', 'age') = $array;
 


Kolejnym usprawnieniem przy destrukcji tablic, jest alternatywa dla list() w formie nawiasów kwadratowych (czyli tych samych, których używamy do tworzenia tablicy):
[$a, $b, $c] = [1, 2, 3];
 


Informacja o złej składni arytmetycznej

Aktualnie, możemy pomieszać wartości integer ze stringami, dodać je ze sobą, a PHP i tak zwróci wynik:

$sum 
= 'Cat has 4 legs' + 'Dog has 4 legs too';
 

Zwróci wynik 8.

PHP 7.1 też zwróci taki wynik, ale wygeneruje też błąd Notice:
Notice: A non well formed numeric string encountered in XXX.php on line YYY


Oznaczenie funkcji mcrypt() jako przestarzałej i usunięcie jej

W PHP 7.1 wszystkie funkcje mcrypt_* zostają oznaczone jako przestarzałe (E_DEPRECATED) i zostaną całkowicie usunięte w wersji 7.1+1.
Dobrą alternatywą dla niego jest openssl.


Jeżeli nie macie środowiska z PHP 7.1, możecie przetestować nowości na tej stronie: https://3v4l.org

Re: Zmiany w PHP 7.1

: 09 lip 2016, 15:46
autor: Macsch15

Re: Zmiany w PHP 7.1

: 21 lip 2016, 13:26
autor: Macsch15

Re: Zmiany w PHP 7.1

: 08 sie 2016, 17:44
autor: Macsch15

Re: Zmiany w PHP 7.1

: 24 sie 2016, 19:11
autor: Macsch15

Re: Zmiany w PHP 7.1

: 08 wrz 2016, 15:42
autor: Macsch15