Nowe i ulepszone funkcje PHP 7.2.0

Opublikowany: 2018-03-03
Nowa wersja PHP 7.2.0 zawiera wiele wspaniałych dodatków. Oferuje więcej funkcji, nowe ulepszenia i lepszą funkcjonalność. Umożliwia użytkownikowi pisanie lepszego kodu i korzystanie z kilku ciekawych funkcji językowych, jak nigdy dotąd. W tym poście przyjrzymy się najnowszym aspektom wprowadzonym w najnowszej iteracji PHP.


Aktualizacja oferuje mnóstwo nowych ulepszeń. Posiada wiele funkcji, które zapewniają lepsze kodowanie. Nowe funkcje w PHP 7.2.0 obejmują:

  • Wskazówka dotycząca pisania obiektów
  • Liczenie różnych niepoliczalnych obiektów
  • Konwersja kluczy numerycznych w rzutach/obiektach tablicy
  • Usunięto rozszerzenie Mcrypt
  • Argon2 w hashu hasła
  • HashContext jako obiekt
  • Lepsze stałe TLS do różnych rozsądnych wartości
  • Nowe rozszerzenie sodowe

Jak wiemy, twórcy stron internetowych na ogół albo kochają, albo nienawidzą języka PHP. Każdy, kto naprawdę lubi używać PHP, z pewnością pokocha to nowe rozwiązanie do kodowania.

Jeśli jesteś programistą internetowym, który lubi pracować z PHP, czytaj dalej, ponieważ omawiamy najważniejsze nowe funkcje aktualizacji PHP 7.2.0.

Podstawowe ulepszenia w PHP 7.2.0

Oto niektóre z głównych ulepszeń w najnowszej aktualizacji PHP.

Rozwiązanie problemu z właściwościami cech

Do czasu wydania PHP 7.2.0 istniał nie naprawiony błąd właściwości cechy. W najnowszej aktualizacji, jeśli cecha definiuje właściwość, klasa nie może zdefiniować właściwości o tej samej nazwie, chyba że jest ona bardziej kompatybilna (ta sama wartość początkowa i widoczność). W przeciwnym razie generuje błąd krytyczny.

Tak więc w przeciwieństwie do PHP 7 i PHP 7.1 możemy teraz spodziewać się błędu krytycznego. To zachowanie zostało naprawione w ostatniej aktualizacji PHP i teraz działa tak, jak powinno być w dokumentacji PHP. Teraz możesz dokonać ścisłego porównania. Po uruchomieniu skryptu w PHP 7.2 zostaniesz powiadomiony o krytycznym błędzie.

Deklaracja typu zwrotu

Ostatnia aktualizacja PHP 7 dodaje dalsze wsparcie dla deklaracji typu zwracanego. Podobnie jak deklaracje typu argumentu, ten typ deklaracji określa również typ wartości, która prawdopodobnie zostanie zwrócona z funkcji. W przypadku deklaracji typu zwracanego oferowane są te same typy, co w przypadku deklaracji typu argumentu.

W PHP 7.2.0 użytkownik może używać deklaracji typu zwracanego w odniesieniu do typu danych obiektu.

Co więcej, ścisłe typowanie ma również wpływ na deklaracje zwracanego typu. Biorąc pod uwagę domyślny tryb słaby, wszystkie zwracane wartości są przekonwertowane do typu dokładnego (w przypadku, gdy są różne i nie są już tego typu). Jednak w trybie silnym wszystkie zwracane wartości muszą być typu dokładnego/poprawnego. W przeciwnym razie zostanie odebrany TypeError .

Jednak metoda podrzędna powinna być zgodna z deklaracją zwracanego typu z deklaracją metody nadrzędnej, gdy zastępujesz metodę nadrzędną. Ale jeśli zwracany typ nie jest zdefiniowany przez metodę nadrzędną, to metoda potomna może go zdefiniować.

Wyrażenia zwrotu generatora

Ta funkcja PHP opiera się na funkcjonalności wydanej w PHP 5.5 zwanej funkcjonalnością generatora. Pozwala na użycie instrukcji return w generatorze i zwrócenie końcowego wyrażenia. Jednak zwrot przez odniesienie jest ograniczony. Wartość można uzyskać za pomocą nowej metody Generatora „ getReturn()” , która jest używana tylko wtedy, gdy generator zakończy działanie i przyniesie wartości.

Niemniej jednak możliwość wyraźnego zwrócenia końcowej wartości za pomocą generatora jest zdecydowanie przydatną umiejętnością do posiadania. Dzieje się tak, ponieważ pozwala na pełne zwrócenie wartości końcowej przez generator, co w szczególności może obsłużyć kod klienta realizujący generator. Dla porównania, jest to o wiele prostsze niż zmuszanie kodu klienta, aby najpierw sprawdził, czy końcowa wartość jest zwrócona, a następnie szczególnie się nią zajmie.

Opcje sesji

Session_start() rozpoznaje teraz wiele opcji, które zastępują różne dyrektywy konfiguracji sesji ustawione w php.ini.

Te opcje zostały również rozszerzone, aby ułatwić session.lazy_write, która pozostaje domyślnie włączona i sprawia, że ​​PHP nadpisuje dowolny plik sesji tylko ze zmianą danych sesji i read_and_close . Jest to opcja, którą można przejść tylko do session_start() , aby potwierdzić, że dane sesji muszą zostać odczytane, a następnie sesja musi zostać natychmiast zamknięta, pozostając niezmienioną.

Ulepszenia bezpieczeństwa w PHP 7.2.0

Oto ostatnie ulepszenia bezpieczeństwa zaimplementowane w PHP 7.2.0.

Algorytm Argon 2 w hashu hasła

Argon 2, zwycięzca konkursu hasła haszującego w 2005 roku, jest silnym algorytmem haszującym. Argon2 jest obecnie uznawany za uniwersalny standard internetowy. Obecnie algorytm ten jest uważany za bardziej opłacalny i bezpieczny niż Bcrypt, inny algorytm mieszający. Nowo wprowadzony Argon2 może być używany poprzez funkcję – hasło_hash ().

Podczas gdy Bcrypt bierze pod uwagę tylko jeden czynnik kosztowy, nowy Argon2 uwzględnia następujące trzy czynniki kosztowe:

  1. Koszt czasu - określa liczbę iteracji algorytmu mieszającego
  2. Koszt pamięci — określa liczby KiB, które muszą być używane podczas mieszania.
  3. Współczynnik równoległości — określa liczbę równoległych wątków, które będą zużywane podczas mieszania.

Domyślne współczynniki kosztów są zdefiniowane przez trzy nowe stałe w następujący sposób:

  • PASSWORD_ARGON2_DEFAULT_TIME_COST
  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2-DEFAULT-THREADS
Lib-sód zastępuje Mcyrpt

Kolejnym ważnym ulepszeniem w PHP 7.2.0 jest usunięcie konwencjonalnej biblioteki kryptograficznej Mcrypt z jądra PHP i dodanie Libsodium.

Mcrypt był uważany za oprogramowanie porzucające i ograniczające rozwój języka. Dlatego został zastąpiony przez Libsodium w PHP 7.2.0. Libsodium to zaawansowana biblioteka kryptograficzna, która zapewnia autentyczne szyfrowanie wraz z wydajną kryptografią krzywych eliptycznych.

Libsodium składa się ze starannie dobranych algorytmów, które są implementowane przez ekspertów ds. bezpieczeństwa w celu zapobiegania lukom w zabezpieczeniach kanałów bocznych. Innymi słowy, Libsodium to wielojęzyczna i wieloplatformowa biblioteka do odszyfrowywania, szyfrowania, haszowania haseł, podpisów i nie tylko.


Przestarzałe funkcje i funkcje

Poniżej znajdują się niektóre z przestarzałych funkcji i cech PHP 7.2.0, które powinny zostać usunięte przed wydaniem PHP 8.0.

Gmp_random() jest traktowana jako funkcja zależna od platformy i prawdopodobnie zostanie przestarzała. Zamiast tego zostaną użyte gmp_random_rage() i gmp_random_bits() .

(nieustawione) rzutowanie jest kolejnym wyrażeniem, które zwykle zwraca wartość null i dlatego jest uważane za bezużyteczne.

Each() służy do iteracji po foreach() jak tablica, ale foreach() jest preferowany ze względu na większą szybkość.

Spl_autoload_register w PHP 5.1 zastąpił funkcję _autoload . Ale teraz prawdopodobnie nastąpi wycofanie funkcji, gdy funkcja zostanie napotkana podczas kompilacji.

mbstring .fucc_overload również został ustawiony do wycofania.

Funkcja attach() potwierdza podane twierdzenie i podejmuje odpowiednie działania w przypadku wyniku FALSE . Użycie metody Asser() z argumentami typu string będzie przestarzałe, ponieważ powoduje podatność RCE.

Zmienna $php_errormsg jest budowana w zakresie lokalnym podczas odbierania błędu niekrytycznego. Ale teraz, w wydaniach PHP 7.2.0, zamiast tego będą używane error_clear_last i error_get_last .

$errcontext prawdopodobnie stanie się przestarzały, ponieważ ta funkcja powoduje problemy z optymalizacją. Ponieważ $errcontext jest używany do modyfikowania wszystkich obiektów i referencji w bieżącym zasięgu, ta funkcjonalność jest rzadko używana.

Create_function() ma wiele problemów z bezpieczeństwem. Co więcej, ma również problemy z wykorzystaniem pamięci i złą wydajnością.

Dlaczego programista WordPress powinien używać PHP 7.2.0?

Ostatnie aktualizacje PHP wprowadzają nowe funkcje i ulepszone środki bezpieczeństwa. Może to obejmować takie czynniki, jak nowoczesna kryptografia, dodatki do podstawowych funkcji i szybsza prędkość ładowania różnych witryn.

Korzyści z używania PHP

PHP to wysoce kompatybilny język, który może być używany z prawie wszystkimi globalnymi standardami baz danych i serwerów (tj. PostgreSQL, MySQL, Sybase, Oracle, Microsoft SQL Server i Informix). Oferuje wysoką wydajność wspieraną przez społeczność open source.

Jest używany do różnych celów, takich jak generowanie plików i dynamicznych stron. PHP umożliwia zarządzanie i przechowywanie informacji w bazie danych witryny. Pozwala użytkownikom szyfrować dane za pomocą funkcji bezpieczeństwa i ogranicza nieautoryzowany dostęp do stron internetowych.

PHP jest używane przez wiele renomowanych stron internetowych, takich jak Yahoo, Facebook i Wikipedia.

Co ważniejsze, najnowsza aktualizacja PHP 7.2.0 oferuje ważne ulepszenia bezpieczeństwa, ekscytujące nowe funkcje i ulepszenia wydajności.

Wydajność PHP 7.2.0

Według benchmarków Phoenix, PHP 7.2.0 jest o 13% szybsze niż 7.1 i prawie 20% szybsze niż 7.0. W porównaniu z PHP 2.6 (wciąż używanym przez 40% użytkowników PHP) jest prawie 25% szybszy.

Istnieje wiele testów, które wspierają te statystyki i wyniki. Oficjalny benchmark PHP pokazuje, że PHP 7 jest dwa razy wydajniejsze i dwa razy szybsze niż 5.6. PHP 7 ma połowę opóźnienia. Ponadto inne testy porównawcze, takie jak Kinsta, sugerują, że PHP 7 może być nawet trzy razy szybsze niż poprzednie wersje.

Jak wspomniano powyżej, głównym powodem poprawy wydajności PHP 7.2.0 jest włączenie zaawansowanych funkcji i wycofanie starych funkcji. Właśnie to sprawia, że ​​ta wersja PHP jest idealna dla użytkowników WordPressa. Jednak programiści muszą sprawdzić kod i zaktualizować przestarzałe funkcje, aby upewnić się, że wszystko jest zgodne.

Wsparcie bezpieczeństwa PHP 7.2.0

PHP 7.2.0 nie oferuje już obsługi bezpieczeństwa. Jednak krytyczne wsparcie będzie nadal dostępne do końca 2018 roku. Społeczność PHP nie oferuje już wsparcia dla drobnych problemów i błędów. Dobrą wiadomością jest to, że najnowsza aktualizacja PHP 7.2.0 zapewni prawidłowe działanie zaawansowanych aktualizacji bezpieczeństwa, a projekt będzie stale wspierany przez społeczność PHP.

Libsodium jest zarówno najważniejszą, jak i najbardziej ulepszoną funkcją, która została przeniesiona ze starszego PHP do PHP 7.2.0. Na szczęście Libsodium jest bardzo łatwe do zaktualizowania.

Jeśli planujesz aktualizację do PHP 7.2.0, upewnij się, że Twój kod składa się z testów integracyjnych i jednostkowych. Takie testy pomogą w wyłapaniu wszelkich problemów związanych z aplikacjami, zanim pojawią się one jako błąd w środowisku na żywo.

W skrócie
PHP 7.2.0 jest zdecydowanie dużym ulepszeniem w porównaniu do poprzednich wersji, takich jak PHP 5.6. Kiedy aktualizujesz kod z PHP 5.6 do PHP 7, możesz natknąć się na pewne niezgodności, zarówno w bibliotekach, od których zależy kod, jak iw samym kodzie. Jednak korzyści płynące z przyjęcia PHP 7.2 sprawią, że Twoje wysiłki będą się opłacać.

Ponieważ PHP 7.2 jest znacznie szybsze niż starsze wersje PHP, pozwala to użytkownikowi na oferowanie ulepszonych usług użytkownikom swojej witryny poprzez implementację zaawansowanych kodów języka PHP.

Czy jesteś gotowy na przejście na nowe PHP 7.2? Jeśli jeszcze go nie zaktualizowałeś, to jest dobry moment na rozpoczęcie przejścia. Czas sprawdzić kody i zaktualizować skrypty.

Daj nam znać, jak znalazłeś nowe ulepszone funkcje i funkcje PHP 7.2.0 w sekcji komentarzy poniżej!