Ósma wersja języka PHP wprowadziła kilka ciekawych nowości, a czego możemy spodziewać się po kolejnej 8.1 wersji?
PHP w wersji 8.1 pokazał się w listopadzie 2021 roku i będzie utrzymywany do 2024 roku. \r\n\r\n## 1. Enums - enumeracja\r\n\r\nPojawił się nowy typ enum, dzięki któremu możemy tworzyć nowe typy danych. \r\n\r\nphp\r\nenum Status\r\n{\r\n case Draft;\r\n case Confirmed;\r\n case Canceled;\r\n}\r\n\r\nfunction changeStatus(Status $status) { ... }\r\n\r\n\r\n## 2. Modyfikator readonly - tylko do odczytu\r\n\r\nMożemy ustawić wartość właściwości tylko na etapie inicjalizacji klasy. Później próba wykonania zmiany spowoduje błąd.\r\n\r\nphp\r\nclass Post\r\n{\r\n public readonly int $status;\r\n \r\n public function __construct(int $status)\r\n {\r\n $this->status = $status;\r\n }\r\n}\r\n\r\n\r\n## 3. Never return type - typ bezzwrotny\r\n\r\nNowy typ, który definiuje co zostanie zwrócone. Never oznacza, że spodziewamy się w odpowiedzi wyjątku, albo zakończenia wykonywania kodu za pomocą np. exit() czy die().\r\n\r\nphp\r\nfunction test(): never\r\n{\r\n echo Test;\r\n die();\r\n}\r\n\r\n\r\n## 4. Nowa funkcja array_is_list\r\n\r\nDzięki nowej funkcji array_is_list możemy sprawdzić, czy dana tablica jest prawidłowo skonstruowana. Weryfikowane są klucze tablicy, czy zaczynają się od zera, czy są cyframi i po kolei.\r\n\r\nphp\r\narray_is_list([]); // true\r\narray_is_list([1, test, 3]); // true\r\narray_is_list([0 => test, test]); // true\r\n\r\narray_is_list([1 => test, test]); // false - nie zaczyna się od 0\r\narray_is_list([0 => test, 2 => test]); // false - klucze nie są po kolei\r\narray_is_list([test => test, test, 3]); // false - wszystkie klucze nie są cyframi\r\n\r\n\r\n## 5. Intersection Types - typy połączeń\r\n\r\nJest to przeciwieństwo wcześniej wprowadzonych Union Types. Oznacza to, że deklarowany typ parametru musi spełniać wymienione typy klas czy interfejsów.\r\n\r\nphp\r\nfunction test(FirstClass&SecondClass $class)\r\n{\r\n \r\n}\r\n\r\n\r\n## Pozostałe nowości\r\n\r\n- Stałe w klasach można deklarować jako final, dzięki czemu nie można ich nadpisywać w klasach dziedziczących,\r\n- Funkcje: htmlspecialchars() oraz htmlentities() oprócz znaków: <, >, &, " będą, również konwertować pojedyncze cudzysłowy: ,\r\n- Użycie w funkcji compact() niezdefiniowanych zmiennych, zamiast informacji wyświetli ostrzeżenie,\r\n- Array unpacking działa teraz również z kluczami tekstowymi,\r\n\r\n## Test szybkości\r\n\r\n- 3% szybszy od PHP 8.0,\r\n- 12% szybszy od PHP 7.4,\r\n- 33% szybszy od PHP 7.1,\r\n- 154% szybszy od PHP 5.6,\r\n\r\n### Kalendarz wersji PHP\r\nZobacz także kalendarz wsparcia wersji PHP.
Warto zobaczyć:
Szukasz hostingu?
Jest dużo firm oferujących hosting, ale którą wybrać? Przedstawiamy zestawienie najciekawszych propozycji i ranking hostingów (Wrzesień 2024).