Nowości w PHP 8.1

Bartosz

Bartosz Stefanicki 24 sierpnia 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

Cykl życia wersji PHP

Wersja PHP Data wydania Koniec wsparcia Koniec poprawek bezpieczeństwa
PHP 5.6 27.04.2014 19.01.2017 31.12.2018
PHP 7.0 1.12.2015 4.01.2018 10.01.2019
PHP 7.1 30.11.2016 1.12.2018 1.12.2019
PHP 7.2 28.11.2017 30.11.2019 30.11.2020
PHP 7.3 4.12.2018 6.12.2020 6.12.2021
PHP 7.4 26.11.2019 28.11.2021 28.11.2022
PHP 8.0 24.11.2020 26.11.2022 26.11.2023
PHP 8.1 23.11.2021 25.11.2023 25.11.2024

Warto zobaczyć

Szukasz hostingu?

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

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

Komentarze


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