Wpisz poszukiwane słowo i wciśnij Enter.

PHP 8 już dostępne – co nowego znajdziemy w kolejnej wersji interpretera?

PHP 8 już dostępne – co nowego znajdziemy w kolejnej wersji interpretera?

PHP jest jednym z najpopularniejszych języków programowania, dzięki któremu działa niemal 80% stron internetowych na całym świecie. I choć programiści z coraz mniejszym entuzjazmem podchodzą do tworzenia aplikacji za pomocą tej technologii (głównie przez pojawienie się konkurencyjnych rozwiązań), to PHP wciąż jest rozwijane, a jego kolejne iteracje wprowadzają usprawnienia oraz przyśpieszają działanie stron internetowych. W końcu, gdyby nie on – nie byłoby m.in. WordPressa lub Joomli. 26 listopada 2020 roku miała miejsce globalna premiera PHP z cyferką 8, a ta jest już dostępna także dla klientów home.pl.

Nowe funkcje w PHP 8

Podobnie jak w każdej wersji PHP tak i tutaj mamy do czynienia z długą listą nowych funkcji, które z pewnością poprawią pracę nad tworzeniem i kompilowaniem kodu PHP w aplikacjach. Do kluczowych zagadnień, związanych z wydaniem nowego PHP należą:

Argumenty Nazwane (tzw. Named Arguments)

To usprawnienie skierowane do osób, które zmagały się do tej pory z optymalizacją kodu i obecności tzw. argumentów opcjonalnych. W poprzednich wersjach PHP wymagało to powielania standardowych (domyślnych) wartości, natomiast teraz twórca kodu może użyć nazwy argumentu np. w postaci:

callFunction(name: $value); 

Jak to wygląda w praktyce? Przykład zamieścili sami twórcy języka porównując składnię kodu z PHP 7 i 8:

PHP 7: htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);

PHP 8: htmlspecialchars($string, double_encode: false);

Korzystanie z unii (Union Types)

To kolejny krok w kierunku uproszczenia niektórych zasad języka PHP. W wersji 7.x korzystanie z unii było możliwe tylko w przypadku odpowiedniej konfiguracji tzw. adnotacji. Wersja 8 usprawnia ten mechanizm i daje programiście zdecydowanie więcej możliwości w optymalizacji danych wejściowych i wyjściowych.

Przykład unii w PHP 7:

class Number {
  /** @var int|float */
  private $number;

  /**
   * @param float|int $number
   */
  public function __construct($number) {
    $this->number = $number;
  }
}

new Number('NaN'); // Ok

Przykład unii w PHP 8:

class Number {
  public function __construct(
    private int|float $number
  ) {}
}

new Number('NaN'); // TypeError

Nullsafe Operator

W języku PHP istnieje część składni nazwana Operatorem zerowym koalescencyjnym, którego zadaniem jest sprawdzanie wartości NULL. To rozwiązanie miało jedną wadę, a mianowicie wymagała od twórcy skonfigurowania konkretnych warunków, które sprawdzały obecność NULL w kodzie W PHP 8 zmieniono sposób weryfikacji i działania samego operatora, tak aby przy pierwszym błędzie łańcuch poleceń zwracał wartość NULL.

Przykład działania operatora w PHP 7:

$country =  null;

if ($session !== null) {
  $user = $session->user;

  if ($user !== null) {
    $address = $user->getAddress();
 
    if ($address !== null) {
      $country = $address->country;
    }
  }
}

Przykład działania operatora w PHP 8:

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

Constructor property promotion

To jedna z ważniejszych zmian w kontekście budowania argumentów do właściwości elementu. Wpłynie ona przede wszystkim na czytelność kodu i jego łatwiejszą interpretację. Funkcja ta ułatwia i przyśpiesza pracę nad deklarowaniem parametrów.

Przykład definiowania argumentów w PHP 7:

class Point {
  public float $x;
  public float $y;
  public float $z;

  public function __construct(
    float $x = 0.0,
    float $y = 0.0,
    float $z = 0.0
  ) {
    $this->x = $x;
    $this->y = $y;
    $this->z = $z;
  }
}

Przykład definiowania argumentów w PHP 8:

class Point {
  public function __construct(
    public float $x = 0.0,
    public float $y = 0.0,
    public float $z = 0.0,
  ) {}
}

Pozostałe funkcje i usprawnienia wprowadzone w PHP 8

Powyższe funkcje są z perspektywy programisty PHP bardzo ważne, ale to nie jedyne usprawnienia wprowadzone w PHP 8. Oprócz tego w nowym wydaniu znajdziemy takie rozwiązania jak:

  • klasę Weak Map
  • interfejs Stringable
  • funkcję str_contains(), str_starts_with(), str_ends_with()
  • funkcję fdiv()
  • funkcję get_debug_type()
  • funkcję get_resource_id()
  • funkcjętoken_get_all()

Szczegóły dotyczące działania tych funkcji znajdziesz na oficjalnej stronie twórców języka PHP – https://www.php.net/

JIT w PHP 8 – czym jest nowy kompilator kodu?

Najważniejszym elementem wprowadzonym w PHP 8 jest kompilator JIT (ang. Just In Time). Jego rolą w mocnym skrócie jest wykonywanie kodu w czasie rzeczywistym, jeszcze zanim trafi do interpretera PHP. Swoim działaniem przypomina nieco pamięć podręczną w przeglądarce – zamiast polegać cały czas na zasobach urządzenia/łącza/serwera, niektóre elementy są zachowywane w pamięci i „podawane” użytkownikowi szybciej.

JIT z pewnością wpłynie na większą wydajność samych aplikacji, natomiast nie stanie się to z dnia na dzień. Twórcy samych aplikacji muszą dostosować swoje rozwiązania do kompilatora, aby całość funkcjonowała poprawnie i zgodnie z założeniami.

Przykład wpływu JIT na obliczenia i interpretację kodu zamieścił jeden z developerów języka PHP. Różnice w wydajności względem PHP 7.x mogą sięgać nawet 300% na korzyść PHP 8.

Jak włączyć PHP 8 na hostingu home.pl?

Najnowsza wersja interpretera PHP jest dostępna dla klientów home.pl bez dodatkowych opłat. Aby skorzystać z PHP 8 zaloguj się do Panelu Klienta pod adresem https://panel.home.pl a następnie przejdź do ustawień swojego hostingu – wybierz serwer, a następnie Ustawienia i Preferencje serwera. Zapoznaj się również z naszą szczegółową instrukcją aktywacji nowej wersji PHP.

Ważne – pamiętaj, iż nowa wersja PHP wprowadza za każdym razem zmiany, które mogą spowodować niepoprawne wyświetlenie strony internetowej lub działanie danej aplikacji – wynika to z faktu konieczności dostosowania samej aplikacji do nowej wersji języka PHP. Jeżeli odnotujesz jakiekolwiek problemy – przywróć poprzednią wersję PHP powyższą metodą.

Okres wsparcia dla PHP 8

Każda wersja PHP posiada konkretny czas wsparcia. Twórcy dzielą go na 2 części – okres wsparcia dla rozwoju wersji oraz okres wsparcia dla łatek bezpieczeństwa. Główne wsparcie dla PHP 8 zakończy się pod koniec listopada 2022 roku, a łatki poprawki bezpieczeństwa będą dostarczane jeszcze przez kolejny rok. W efekcie PHP 8 zapewni twórcom spokój i komfort przez 3 lata od momentu wydania.

Okres wsparcia dla PHP 8
Czas wsparcia dla ostatnich wersji PHP, od 5.6 do 8.

Twój operator nie wspiera PHP 8? Przenieś swoją stronę do home.pl i korzystaj z najnowszej wersji interpretera już dzisiaj. Na naszym hostingu znajdziesz również najnowsze technologie wspierające bezpieczeństwo stron internetowych tj. protokół HTTP/3 (QUIC), DNSSEC dla domen internetowych, a także zaporę przed atakami (WAF – Web Application Firewall). Wszystkie funkcje udostępniamy bezpłatnie.

Sprawdź dostępne pakiety hostingowe poniżej: