Nowości w PHP 8.1

Bartosz Stefanicki 15 lipca 2022

Nowości w PHP 8.1

Ósma wersja języka PHP wprowadziła kilka ciekawych nowości, które opisywałem ostatnio na tym blogu. 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

Data publikacji: 15.07.2022 r. Tagi: hosting, php, skrypty, top10. Źródło obrazka porady: Pixabay.

Szukasz hostingu?

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

Komentarze

Statystyki

  • 182

    Liczba porad
  • 1 808

    Liczba komentarzy
  • 5

    Narzędzi online

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

Używamy informacji zapisanych za pomocą cookies i podobnych technologii m.in. w celach reklamowych, statystycznych oraz dostosowania naszych serwisów do indywidualnych potrzeb użytkowników.