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