PHP 8.1 – co nowego? Zmiany i test wydajności

PHP 8.1

Mimo iż PHP 8.1 nie doczekało się jeszcze oficjalnego wydania, a aby zapoznać się z pełnym zakresem możliwości, jakie zostaną zaproponowane, będzie trzeba poczekać do 25 listopada 2021 roku. Tak już teraz mamy do dyspozycji szereg konkretnych ciekawostek, dzięki którym strona WWW zyska na operatywności.

Jak wygląda nowa wersja PHP 8.1?

I o ile dotyczą one nowo wprowadzonych funkcji oraz dodatkowych udogodnień, tak nie należy zapominać, iż każda aktualizacja PHP wiąże się, również z eliminacją błędów, zwiększeniem stabilności kodu, poprawkami dotyczącymi bezpieczeństwa oraz oczywiście z kolejnym krokiem w stronę lepszej wydajności.

Ta ostatnia dla wielu właścicieli adresów WWW jest przeważnie najważniejsza. Toteż przy okazji odpowiedzi na pytanie: „Co nowego w PHP 8.1?”, skupimy się na tym aspekcie w pierwszej kolejności.

Wydajność PHP 8.1 vs. 8.0 vs. 7.4 vs. 7.1 vs. 5.6

Jak można zauważyć, porównując poszczególne aktualizacje, głównym założeniem grupy programistów czuwających nad wdrażaniem nowych odsłon PHP jest ich jak największa użyteczność.
Co widać na wykresach wydajności, które, dzięki zespołowi phoronix.com, pozwalają tę zależność obserwować raz za razem na podstawie wyników benchmark PHPBench:

Jak wygląda wydajność PHP w wersji 8.1?

Przytoczony wyżej test został przeprowadzony na serwerze AMD EPYC 7543. A także zestawia uprzednie wersje PHP: 8.0, 7.4, 7.1, 5.6 oraz 8.1.

Badanie to wskazuje, iż wynik benchmark dla PHP 8.1 (wydanie Alpha) jest o:

  • 3% wyższy od PHP 8.0;
  • 12% wyższy od PHP 7.4;
  • 33% wyższy od 7.1;
  • 154% wyższy od PHP 5.6.

Ten pomiar, mimo nieznacznych różnic w korelacji do niedawnych wersji, wciąż, jednak eksponuje kierunek wzrostowy. Co dla każdego właściciela bloga lub e-sklepu będzie oznaczać szybsze ładowanie się zasobów witryny.

Warto wiedzieć: O ile aktualizacja PHP ma na celu zwiększenie wydajności, należy pamiętać, że sama strona niekoniecznie musi być na taką ewentualność przygotowana. A taki stan rzeczy może mieć, np. miejsce, gdy korzystasz z dedykowanych i nieprzystosowanych do nowego wydania wtyczek.

Sprawdź najszybszy na rynku hosting WordPress oraz hosting Ecommerce z PHP 8.1.

Co nowego w PHP 8.1

I o ile PHP w wersji 8.0 wcale nie była małą aktualizacją, tak nie można powiedzieć, że PHP 8.1 w czymś uprzedniemu wydaniu ustępuje.

PHP 8.1 a nowe funkcjonalności

O czym można przekonać się, przechodząc na stronę: Wydanie PHP 8.1. Gdzie opublikowano pełną listę proponowanych rozwiązań.

I ponieważ zawiera ona kilka interesujących pozycji, część z nich faktycznie omówimy.

Oto co nowego w PHP 8.1:

Enums (enumeracja)

Enums to zdefiniowane przez użytkownika typy danych posiadające określoną z góry liczbę wartości.

  enum Suit {
    case Clubs;
    case Diamonds;
    case Hearts;
    case Spades;
}  

Jest to, więc typ wyliczeniowy złożony z nazwy oraz listy potencjalnych stanów (case), do których odwołamy się w razie chęci otrzymania określonego rezultatu.

Enums to, także najbardziej wyczekiwana ciekawostka w nowym wydaniu PHP 8.1.

Readonly Properties (właściwości tylko do odczytu)

Modyfikator readonly będzie od teraz dostępny we właściwościach klas.

class Test {
    public readonly string $jchost;
 
    public function __construct(string $jchost) {
       
        $this->jchost = $jchost;
    }
}  

Właściwość oznaczona jako readonly będzie mogła być zainaugurowana wyłącznie raz. A jakakolwiek późniejsza zmiana wartości nie będzie możliwa oraz poskutkuje wywołaniem błędu.

Never return type (typ bezzwrotny)

Typ never dodany w funkcji nie pozwoli zwrócić wartości, a także zgłosi wyjątek oraz zatrzyma dalsze wykonywanie kodu.

function redirect(string $url): never {
    header('Location: ' . $url);
    exit();
}  

W odróżnieniu od zbliżonego typu void, który nie przekazuje niczego, typ „nigdy” uniemożliwi zadeklarowanie czegokolwiek wskutek wejścia w tryb niekończącej się pętli, lub w rezultacie zakończenia procesowania skryptu.

Funkcja: array_is_list

Powyższa funkcja zwraca własność true, jeśli dana tablica jest uporządkowaną listą wartości, a wszystkie obecne w niej klucze są liczbami całkowitymi zaczynającymi się od 0.

array_is_list([]); // true
array_is_list([1, 2, 3]); // true
array_is_list(['apple', 2, 3]); // true
array_is_list(['apple', 'orange']); // true
array_is_list([0 => 'apple', 'orange']); // true
array_is_list([0 => 'apple', 1 => 'orange']); // true 

Taki rezultat będzie odnosić się, również do tablic niezawierających żadnych zdefiniowanych parametrów.

Intersection Types (typy połączeń)

Typy połączeń umożliwią zadeklarowanie typu dla parametrów/właściwości, wymuszając przynależność wartości do wszystkich uwzględnionych typów klas/interfejsów.

function count_and_iterate(Iterator&\Countable $value) {
    foreach($value as $val) {}
    count($value);
} 

Intersection Types jest, więc swoistym zaprzeczeniem dla uprzednio omawianych Union Types, z którymi możesz zapoznać się tutaj: PHP 8 – co nowego (wydajność). A które dopuszczają wystąpienie dowolnego z podanych typów.

Fibers (bloki kodu)

Fiber to blok kodu (posiadający określony stan i zmienne), który może być uruchamiany, zawieszany i wznawiany samorzutnie lub przez podstawowy skrypt.

new Fiber('var_dump');
new Fiber(fn(string $message) => print $message);
new Fiber(function(string $message): void {
    print $message;
}); 

Omawiane bloki nie są inicjowane równolegle względem głównego kodu, a asynchronicznie. Co oznacza, iż Fiber może być wyegzekwowany w dowolnym momencie, zamiast nadrzędnego skryptu.

Dodatkowe zmiany i nowe funkcje

Każdorazowa aktualizacja języka PHP, oprócz zapowiedzi nowych funkcjonalności niesie za sobą, również szereg modyfikacji oraz ulepszeń.

Czego można spodziewać się po nowym wydaniu PHP?

One, również mogą przyczynić się do poprawy wydajności. W związku, z czym warto dowiedzieć się na ich temat ciut więcej.

Oto, jakie zmiany zaszły w PHP 8.1:

  • funkcje: htmlspecialchars oraz htmlentities, oprócz znaków: ", <, >, & będą, również konwertować pojedyncze cudzysłowy: ';
  • obsługa powłoki PHP będzie wymagać skorzystania z rozszerzenia readline;
  • w funkcjach: fputcsv oraz SplFileObject::fputcsv pojawi się parametr eol umożliwiający uwzględnienie konfigurowalnego znaku na końcu wiersza;
  • domyślnie dodawanym podpisem w plikach PHAR będzie od teraz algorytm: SHA256 (uprzednio: SHA1);
  • funkcja: version_compare() zawiera dodatkowe ograniczenia odnoszące się do parametrów operatora;
  • błędy w rozszerzeniu MySQLi nie będą wyciszane, a zgłoszą wyjątek;
  • użycie w funkcji: compact() niezdefiniowanych zmiennych, zamiast informacji wyświetli ostrzeżenie.

Ponad ujęte wyżej usprawnienia zespół programistów skupionych na udoskonaleniu języka PHP dokonuje, również cyklicznych migracji zasobów z zewnętrznych źródeł (o czym można dowiedzieć się więcej tutaj: Transformacja zasobów).

W przypadku PHP 8.1 zmiana ta dotyczy:

  • rozszerzenia Pspell – obecnie przynależne do obiektów klas: Pspell\Dictionary i Pspell\Config;
  • file_info – zasób przeniesiony do obiektów finfo;
  • identyfikatorów czcionek – te zostały dołączone do obiektów klasy GdFont;
  • rozszerzenia FTP – zasoby tego połączenia należą odtąd do obiektów klasy FTP\Connection;
  • IMAP – teraz jako obiekt klasy IMAP\Connection;
  • rozszerzenia LDAP – aktualnie wcielone do obiektów klas: \LDAP\Connection, \LDAP\Result i \LDAP\ResultEntry.

Wycofania z PHP 8.1

Nowe wydanie PHP 8.1 unieważnia, również część mniej przydatnych funkcji. Z listą rozwiązań, które nie będą już dostępne, możesz zapoznać się poniżej.

Nowa wersja PHP a wycofane funkcje

Oto niektóre funkcjonalności wycofane z PHP 8.1:

  • przekazywanie wartości null w funkcjach;
  • filter.default oraz filter.default_options deklarowane w pliku php.ini;
  • funkcje: mhash*();
  • metoda: mysqli::get_client_info oraz mysqli_get_client_info($param);
  • właściwość: mysqli_driver->driver_version z rozszerzenia MySQLi;
  • dyrektywa: auto_detect_line_ending;
  • funkcje: date_sunrise i date_sunset.

Jak zmienić wersję PHP na 8.1?

Jeśli chcesz samodzielnie sprawdzić wydajność nowej wersji PHP, możesz to zrobić, przechodząc bezpośrednio do panelu hostingu.
Znajdziesz tu dedykowaną przestrzeń, w której wystarczy odhaczyć właściwą opcję.

Jeżeli nie wiesz, gdzie szukać, spójrz na kroki rozrysowane poniżej.

Warto wiedzieć: W przypadku każdej aktualizacji istnieje ryzyko wystąpienia niestabilności systemu plików, które niekoniecznie mogą być z góry przystosowane oraz kompatybilne z nową wersją PHP. Jeśli taka sytuacja będzie miała miejsce, wystarczy przywrócić poprzednie ustawienie.

Krok 1

Przejdź do panelu hostingu i najedź kursorem na kartę: „Dodatkowe funkcje”, a następnie wybierz: „Select PHP version”.

Jak zmienić wersję PHP?

Krok 2

Teraz w polu: „Bieżąca wersja PHP” kliknij aktualne ustawienie, aby rozwinąć menu i odznacz opcję: „8.1”. Zapisz zmiany poprzez wybranie: „Ustaw jako bieżącą”.

Aktualizacja wersji PHP

Podsumowanie

PHP 8.1 to kolejna duża aktualizacja wprowadzająca kilka interesujących rozwiązań, które mogą okazać się praktyczną pomocą dla webmasterów.

I mimo iż finalna wersja zostanie ogłoszona pod koniec listopada bieżącego roku, z każdą mniejszą i większą nowinką można zapoznać się na oficjalnej stronie: Wiki — PHP 8.1.
Gdzie kolejne udoskonalenia będą pojawiać się od teraz w ramach cyklu Release Candidate do decydującej odsłony w dwutygodniowych odstępach czasowych. Co zasadniczo wskazuje, iż przed PHP 8.1 jest już ostatnia prosta.

 

 

 

 

Odbieramy telefony, odpisujemy na maile, nie ukrywamy kosztów, a dodatkowo oferujemy najszybsze pakiety hostingowe na rynku. Uważasz, że to zwroty marketingowe? Sprawdź sam/a!

Jeśli nie będziesz zadowolony/a, zwrócimy Ci pieniądze.
Twoje strony i sklepy przeniesiemy za darmo!

Hosting WordPressHosting Magento

Jeżeli masz jakiekolwiek pytania, skontaktuj się z nami! Kliknij tutaj.

Chcesz dowiedzieć się o nas trochę więcej? Przejdź na stronę JCHost.pl.

Daj znać znajomym!