Ó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 (Wrzesień 2023).
Data publikacji: 15.07.2022 r. Tagi: hosting, php, skrypty, top10. Źródło obrazka porady: Pixabay.