Nowości w PHP 8.1

PHP + MySQL

Bartosz Stefanicki, 4.05.2024

Nowości w PHP 8.1

Ó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.

#hosting, #php, #skrypty, #top10. Źródło obrazków: Pixabay, Font awesome.

Szukasz hostingu?

Jest dużo firm oferujących hosting, ale którą wybrać? Przedstawiamy zestawienie najciekawszych propozycji i ranking hostingów (Wrzesień 2024).

1 komentarz

Ostatnie komentarze

Statystyki

  • 199

    Liczba porad
  • 1 996

    Liczba komentarzy
  • 5

    Narzędzi online

© 2005-2024 itporady.pl. Wszystkie prawa zastrzeżone.

Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką prywatności. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.