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.
1. Enums - enumeracja
Pojawił się nowy typ enum, dzięki któremu możemy tworzyć nowe typy danych.
enum Status
{
case Draft;
case Confirmed;
case Canceled;
}
function changeStatus(Status $status) { ... }
2. Modyfikator readonly - tylko do odczytu
Możemy ustawić wartość właściwości tylko na etapie inicjalizacji klasy. Później próba wykonania zmiany spowoduje błąd.
class Post
{
public readonly int $status;
public function __construct(int $status)
{
$this->status = $status;
}
}
3. Never return type - typ bezzwrotny
Nowy 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().
function test(): never
{
echo 'Test';
die();
}
4. Nowa funkcja array_is_list
Dzię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.
array_is_list([]); // true
array_is_list([1, 'test', 3]); // true
array_is_list([0 => 'test', 'test']); // true
array_is_list([1 => 'test', 'test']); // false - nie zaczyna się od 0
array_is_list([0 => 'test', 2 => 'test']); // false - klucze nie są po kolei
array_is_list(['test' => 'test', 'test', 3]); // false - wszystkie klucze nie są cyframi
5. Intersection Types - typy połączeń
Jest to przeciwieństwo wcześniej wprowadzonych Union Types. Oznacza to, że deklarowany typ parametru musi spełniać wymienione typy klas czy interfejsów.
function test(FirstClass&SecondClass $class)
{
}
Pozostałe nowości
- Stałe w klasach można deklarować jako final, dzięki czemu nie można ich nadpisywać w klasach dziedziczących,
- Funkcje: htmlspecialchars() oraz htmlentities() oprócz znaków: <, >, &, " będą, również konwertować pojedyncze cudzysłowy: ',
- Użycie w funkcji compact() niezdefiniowanych zmiennych, zamiast informacji wyświetli ostrzeżenie,
- Array unpacking działa teraz również z kluczami tekstowymi,
Test szybkości
- 3% szybszy od PHP 8.0,
- 12% szybszy od PHP 7.4,
- 33% szybszy od PHP 7.1,
- 154% szybszy od PHP 5.6,
Kalendarz wersji PHP
Zobacz także kalendarz wsparcia wersji PHP.
Kategorie: PHP + MySQL. Tagi: #hosting, #php, #skrypty, #top10. Źródło obrazków: Pixabay, Font awesome.