Nowości w PHP 8.1

Data aktualizacji: 4.05.2024r. Autor: Bartosz Stefanicki.

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.

Zobacz także

1 komentarz