PHP 7.2 już dostępne!

Co nowego przyniosła wyczekiwana aktualizacja 7.2

php 7.2

 

Oficjalna wersja PHP 7.2

Nowa wersja PHP 7.2 została wydana oficjalnie 30 listopada 2017 i od teraz jest dostępna dla wszystkich klientów JCHost.pl. W najnowszej aktualizacji przyśpieszono wykonywanie skryptów, naniesiono poprawki w zabezpieczeniach oraz ułatwiono pisanie pewnych części kodu. Zmiany to w większości ciężkie ciekawostki techniczne, jednakże zalety korzystania z PHP 7.2 odczuje każdy – nawet osoba, która nie ma kompletnego pojęcia o powyższym skryptowym języku programowania.

 

Testy wydajnościowe

Poniższe grafiki przedstawiają wyniki w testach, w których sprawdzana była szybkość PHP 7.2 w porównaniu z następującymi wersjami: 7.1.7, 7.0.21 oraz 5.6.31. Przeanalizowany został ogólny wynik typu benchmark oraz szybkość wczytywania się obszernego systemu skryptów.

test benchmark php 7.2

 Ilość punktów w teście benchmark dla PHP 7.2:

  • 13% więcej od PHP 7.1.x
  • 21% więcej od PHP 7.0.x
  • 163% więcej od PHP 5.6.x
szybkosc php 7.2

 Szybkość PHP 7.2 w ogólnym teście:

  • o 6% sybsze od PHP 7.1.x
  • o 9% szybsze od PHP 7.0.x
  • o 221% szybsze od PHP 5.6.x

 

W obu testach widoczna jest minimalna poprawa pomiędzy wersjami 7.0.x i 7.1.x, a wersją 7.2. Porównując natomiast najnowszą wersję z wersją 5.6 (używaną nadal przez ponad 40% stron internetowych!), widoczna jest kompletna dominacja i kilkukrotnie lepszy wynik.

Czy to znaczy, iż aktualizowane stron opartych o PHP 7.x.x do wersji 7.2 nie ma sensu? Oczywiście, że ma! Każdy kto posiada własną witrynę internetową, powinien dążyć do posiadania jak najnowszych i jak najlepszych rozwiązań, które mogą przyśpieszyć daną stronę. Chyba nikt nie lubi czekać na załadowanie się strony dłużej niż kilka sekund?

Brak ukrytych kosztów i gwarancja kompleksowej pomocy technicznej to standard w JCHost.pl. Jeśli szukasz rzetelnej firmy hostingowej – sprawdź naszą ofertę!

Twoje strony i sklepy przeniesiemy za darmo!

Hosting WordpressHosting Magento & PrestaShop

 

Ustawienie i aktualizacja

Ustawienie PHP 7.2 jako głównej wersji PHP jest możliwe tylko w momencie, gdy dana firma hostingowa zainstalowała oraz uruchomiła podaną wersję dla oferowanych pakietów hostingowych.

Pomimo dużej ilości nowych funkcji i elementów dodawanych w głównych aktualizacjach PHP, nie można zapominać o tym, że każdy update wiąże się z usuwaniem innych, przestarzałych elementów. Dlatego też przed każdą zmianą techniczną (a w szczególności zmianą wersji PHP) zalecamy wykonanie kopii zapasowej plików.

Klienci JCHost.pl mogą korzystać z PHP 7.2 już od 6 grudnia (dotyczy to zarówno aktualnych, jak i nowych klientów). Konfiguracja jest banalnie prosta, może być wykonana z poziomu panelu klienta i wymaga jedynie paru kliknięć!

  1. Zaloguj się do panelu hostingowego, wybierz domenę i kliknij w opcję “Select PHP version”.
PHP 7.2 w panelu

 

2. Kliknij w miejsce aktualnej wersji PHP, a następnie wybierz pozycję ‘7.2’ z listy.

jak ustawic php 7.2

 

Główne ulepszenia i zmiany w kodzie

Rozszerzenie typu parametru

Do tej pory PHP nie dopuszczało żadnej wariancji typów parametrów między klasami potomnymi, a ich klasami nadrzędnym. W poniższym kodzie pominięty został typ w podklasie, co powodowało wystąpienie ostrzeżenia związanego z daną wariancją.

Przykład kodu:

class NewClass {
public function newFunction(array $newarray) { /* ... */ }
}
class SecondClass extends NewClass {
public function newFunction($newarray) { /* ... */ }
}

Ostrzeżenie w poprzednich wersjach PHP:

Warning: Declaration of SecondClass::newFunction($newarray) should be compatible with NewClass::newFunction(array $newarray) in %s on line 8

Począwszy od wersji PHP 7.2 można pominąć typ parametru w podklasie bez przerywania kodu i widocznego wyżej ostrzeżenia. Dzięki temu, istnieje możliwość rozszerzenia wybranej klasy bez konieczności aktualizacji wszystkich podklas.

Deklaracja typu argumentów

Wraz z wprowadzeniem PHP 5, w deklaracji funkcji została dodana możliwość określenia typu argumentu, który ma zostać przekazany. Jeśli dana wartość była niepoprawnego typu, PHP zgłaszało błąd.

Przykład kodu:

class NewClass {
public $var = ‘Witaj';
}
$newclass = new NewClass;
function test(NewClass $newclass){
return $newclass->var;
}
echo test($newclass);

Błąd w poprzednich wersjach PHP:

Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of NewClass, string given, called in /index.php on line 12 and defined in /index.php:8

Niepoprawny typ danych w powyższym kodzie spowodowałby błąd, ponieważ funkcja ‘test’ oczekuje na wystąpienie klasy ‘NewClass’. Ulepszenie deklaracji typu argumentów w wersji PHP 7.2 polega na udostępnieniu opcji użycia tzw. typehints, czyli przysłowiowych wskazówek, umożliwiających deklarację ogólnego obiektu jako argumentu funkcji/metody.

class NewClass {
public $var = '';
}
class ExampleOne extends NewClass {
public $var = 'Nazywam sie Adam';
}
class ExampleTwo extends NewClass {
public $var = ‘Nazywam sie Karolina’;
}
$exampleone = new ChildOne;
$exampletwo = new ChildOne;
function test(object $arg) {
return $arg->var;
}
echo test($exampleone);
echo test($exampletwo);

W powyższym przykładzie funkcja test została wykonana dwukrotnie, przekazując inny obiekt przy każdym połączeniu. Takie rozwiązanie nie było możliwe w poprzednich wersjach PHP.

Deklaracje typu wywołanego obiektu

Jeżeli dana deklaracja typu argumentu określa typ dla argumentu funkcji, odpowiedź zwrotna określa oczekiwany typ wartości. Deklaracje typów zwrotnych pomagają lepiej wykorzystać kod i opisują typ zmiennej, która ma zostać wywołana przez funkcję.

Przykład kodu:

class NewClass {
public $var = 'Hello World';
}
$newclass = new NewClass;
function test(NewClass $arg) : object {
return $arg;
}
echo test($newclass)->var;

Błąd w poprzednich wersjach PHP:

Fatal error: Uncaught TypeError: Return value of test() must be an instance of object, instance of NewClass returned in /index.php:10

Skorzystanie z tego samego skryptu przy wersji PHP 7.2 spowoduje, że serwer zwróci echo “Hello World” bez wyrzucania błędu.

 

Ulepszenia bezpieczeństwa

Libsodium

Wersja PHP 7.2 zawiera dodatkową bibliotekę Sodium, czyli część Libsodium – wieloplatformowej biblioteki do szyfrowania, odszyfrowywania podpisów, hashowania haseł itp.

Argon2 dla hashowania haseł

Argon2 jest zaawansowanym algorytmem hashującym, który w PHP 7.2 stał się bardziej bezpieczną alternatywą dla algorytmu Bcrypt. Tym samym, w funkcjach password_*, można od teraz używać stałą PASSWORD_ARGON2I.

password_hash('password', PASSWORD_ARGON2I);

W przypadku użycia Argon2, pod uwagę brane są aż 3 współczynniki ‘kosztu’ (w przeciwieństwie do Bcrypt, który korzystał tylko z jednego czynnika).

  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2_DEFAULT_TIME_COST
  • PASSWORD_ARGON2_DEFAULT_THREADS

Powyższe współczynniki to następująco:

  • Pamięć: ile KiB powinno zostać spożytkowane dla danego hashowania (standardowo 1<<10).
  • Nakład czasu: liczba iteracji algorytmu (standardowo 2).
  • Równoległość: ilość wątków użytych w trakcie hashowania (standardowo 2).

Przykład:

$options = ['memory_cost' => 1<<11, 'time_cost' => 8, 'threads' => 4];
password_hash('password', PASSWORD_ARGON2I, $options);

 

Wycofane elementy

Poniżej znajduje się lista wyróżnionych funkcji lub elementów, uznanych za przestarzałe lub niekompletne. Podane elementy zostały usunięte w wersji 7.2 lub będą wycofane do wersji 8.0.

  • __autoload 
  • $php_errormsg 
  • create_function() 
  • mbstring.func_overload 
  • (unset) cast 
  • gmp_random()
  • each() 
  • assert()
  • $errcontext

Pełny wykaz wraz z alternatywami dostępny jest tutaj.

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!