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?

Co więcej, powinieneś również sprawdzić wyniki dla jeszcze nowszej wersji – PHP 7.3!

 

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

 

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!