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.