Posty

Ukazał się PHP w wersji 8.0.0

Ambroży Administrator, zaktualizowany 13.12.2020 o 03:58

php-elephant-logo.png

Wiele zmian na lepsze pojawiło się w najnowszej wersji języka PHP. Najważniejszą z nich jest zaimplementowanie kompilacji Just-in-time (JIT) w PHP. Pozwala ona na kompilowanie programu do kodu maszynowego bezpośrednio przed jego wykonaniem. To z kolei przyśpiesza wykonywanie obliczeń matematycznych lub przetwarzanie grafiki 2D i 3D. Mimo, że wprowadzenie JIT może nie podnieść znacząco wydajności aplikacji webowych, to jest to z pewnością krok w dobrym kierunku na przyszłość, pozwalając zmienić PHP w język bardziej ogólnego zastosowania.

Kolejnym ciekawym dodatkiem w PHP 8 jest wyrażenie match zmniejszające ilość pisanego kodu w porównaniu z np. wyrażeniem switch. Popatrzmy na przykład:

echo match (8.0) {
  '8.0' => "Oh no!",
  8.0 => "This is what I expected",
};

Wyrażenie match zraz z funkcją echo pozwala stosować porównania zmiennych bez konieczności użycia wyrażeń typu break czy default. Ponieważ match zwraca wartość, to może być użyte do przypisywania wartości zmiennym. Powyższy przykład wyświetli tekst This is what I expected.

Inna zmiana wprowadzona w PHP 8 pozwoli na zmniejszenie liczby instrukcji warunkowych koniecznych do sprawdzenia czy zmienna ma wartość null. Powiedzmy, że mamy taki zapis:

$country = $session->user->getAddress()->country;

To przypisanie zwróci wyjątek już w momencie, gdy $session lub $session->user będzie null. Sprawdzenie tego za każdym razem było uciążliwe i wymagało pisania dużej ilości dodatkowego kodu. Teraz możemy użyć operatora ? pozwalającego sprawdzać po kolei każdy element łańcucha wywołań.

$country = $session?->user?->getAddress()?->country;

Jeżeli Przynajmniej jeden z elementów będzie typu null, to sprawdzanie pozostałych będzie pominięte a zmienna $country również przyjmie wartość null.

To tylko niektóre zmiany jakie znalazły się w najnowszej wersji PHP. Dodatkowo pojawiło się również kilka nowych funkcji:

  • str_starts_with() – zwraca true jeśli ciąg znaków zaczyna się innym ciągiem znaków
  • str_ends_with() – jak wyżej, ale sprawdza koniec ciągu
  • str_contains() – zwraca true lub false w zależności od tego czy jeden ciąg znaków zawiera inny ciąg
  • get_debug_type() – zwraca typ zmiennej, uzupełnia dotychczasową funkcję gettype()


© 2024 Młody Informatyk v. 0.1.7717