W poprzednim wpisie przedstawiłem listę nowości w PHP7. W tym skupie się na takich rzeczach jak obsługa wyjątków, deklaracji typu zwracanej wartości oraz zarezerwowanym typom.

Obsługa wyjątków

W PHP7 wszystkie wyjątki implementują interfejs o nazwie \Throwable. Interfejs ten jest implementowany w dwóch głównych klasach(rodzinach klas) obsługujących wyjątki oraz błędy. Struktura wygląda tak jak poniżej:

interface Throwable
    Exception implements Throwable
    Error implements Throwable
        TypeError extends Error
        ParseError extends Error

Klasa Exception reprezentuje wyjątki, z którymi dotychczas mieliśmy do czynienia w PHP, natomiast klasa Error reprezentuje błędy, czyli np błędy wykonania, typowania, parsowania. Dzięki temu możemy odpowiednio zaregować na błędy bez konieczności implementowania własnego mechanizmu rzucania wyjątków przez funkcje set_error_handler().

Więcej na temat nowej obsługi błędów możesz przeczytać na https://wiki.php.net/rfc/engine_exceptions_for_php7

Typy zwracanej wartości

W PHP 7 możemy ustawić by w trybie strict PHP sprawdzało czy wartość zwracana przez funkcje/metodę jest tym czego oczekujemy. Przykład

<?php

function letMeReturnInt() :int
{
   return 1.23;
}

function letMeReturnArray() : array
{
   return [];
}

Po uruchomieniu pierwszej funkcji w trybie strict dostaniemy TypeError ponieważ zadeklarowaliśmy, iż funkcja zwróci typ INT, natomiast zwracany jest FLOAT. W drugim wszystko będzie OK ponieważ zwracamy tablicę, a typ zwracanej wartości przez funkcję też jest zadeklarowany jako tablica. Dzięki typom zwracanej wartości, możemy mieć większą kontrolę nad aplikacją, a kod jest bardziej przewidywalny i zdatny do testów.

Więcej o typach zwracanej wartości możecie przeczytać <a href="https://wiki.php.net/rfc/return_types">pod tym linkiem.</a>

Nowe zarezerwowane typy.

W PHP7 pojawiają się nowe typy danych, które są zarezerwowane. Oznacza to, że nie możesz nazywać klas, interfejsów, traitów, tymi słowami. Te nowe typy to: Int, Float, Bool, String, True, False, Null. Jest to zmiana, która może spodować, iż w aplikacjach, które zostaną uruchomione na PHP7 pojawią się błędy.

PHP ewoluje i warto śledzić te zmiany. Pamiętaj, że można już pobrać i skompilować sobie php w wersji 7. Jeśli chcesz to zrobić i zacząć zabawę w nowym PHP wejdź w ten link. Mam nadzieję, że przybliżyłem Ci wszystkie ciekawostki i nowości w nowym PHP.