Hosting

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:

home.pl wspiera rozw├│j firm w Internecie

home.pl jest najwi─Ökszym w Polsce dostawc─ů us┼éug internetowych dla klient├│w biznesowych i indywidualnych. Jako cz┼éonek globalnej grupy United Internet firma jest liderem bran┼╝y r├│wnie┼╝ w Europie.

#wspieramyrozw├│jfirm