Caracteristicile noi și îmbunătățite ale PHP 7.2.0

Publicat: 2018-03-03
Noua versiune a PHP 7.2.0 include o mulțime de completări grozave. Oferă mai multe funcții, îmbunătățiri noi și funcționalități mai bune. Acesta permite utilizatorului să scrie un cod mai bun și să folosească mai multe caracteristici interesante ale limbajului ca niciodată înainte. În această postare, ne vom uita la cele mai noi aspecte introduse în cea mai recentă iterație a PHP.


Actualizarea oferă o mulțime de îmbunătățiri noi. Vine cu multe caracteristici care asigură o codificare mai bună. Noile caracteristici din PHP 7.2.0 includ:

  • Sugestie de tastare a obiectelor
  • Numărarea diferitelor obiecte nenumărabile
  • Conversia tastelor numerice în matrice/obiect
  • Extensia Mcrypt a fost eliminată
  • Argon2 în hash de parolă
  • HashContext ca obiect
  • Constante TLS mai bune la diferite valori corecte
  • Noua extensie de sodiu

După cum știm, dezvoltatorii web, în ​​general, iubesc sau urăsc folosirea limbajului PHP. Oricine îi place cu adevărat să folosească PHP va iubi cu siguranță această nouă soluție de codare.

Dacă sunteți un dezvoltator web căruia îi place să lucreze cu PHP, atunci citiți mai departe în timp ce discutăm despre cele mai importante funcții noi ale actualizării PHP 7.2.0.

Îmbunătățiri de bază în PHP 7.2.0

Iată câteva dintre îmbunătățirile de bază ale celei mai recente actualizări a PHP.

Soluția pentru bug-ul proprietăților trăsăturilor

Până la lansarea PHP 7.2.0, a existat un bug de proprietate neremediat. În cea mai recentă actualizare, dacă o trăsătură definește o proprietate, o clasă nu poate defini o proprietate având același nume decât dacă este mai compatibilă (aceeași valoare inițială și vizibilitate). În caz contrar, emite o eroare fatală.

Deci, spre deosebire de PHP 7 și PHP 7.1, acum ne putem aștepta să primim o eroare fatală. Acest comportament a fost remediat în actualizarea recentă a PHP și acum funcționează așa cum spune că ar trebui în documentația PHP. Acum puteți face o comparație strictă. Pe măsură ce rulați scriptul în PHP 7.2, veți fi notificat despre o eroare fatală.

Declarație de tip returnare

Actualizarea recentă a PHP 7 adaugă suport suplimentar pentru declarațiile de tip returnare. La fel ca și declarațiile de tip argument, acest tip de declarație precizează și tipul valorii care este probabil să revină de la o funcție. Pentru declarația de tip returnat, sunt oferite aceleași tipuri ca și pentru declarațiile de tip de argument.

În PHP 7.2.0, un utilizator este activat să utilizeze declarația de tip returnat în ceea ce privește tipul de date obiect.

În plus, tastarea strictă are, de asemenea, un impact asupra declarațiilor de tip de returnare. Având în vedere modul slab implicit, toate valorile returnate sunt forțate la tipul exact (în cazul în care sunt diferite și nu sunt deja de acel tip). Cu toate acestea, în modul puternic, toate valorile returnate trebuie să fie de tipul exact/corect. În caz contrar, se primește un TypeError .

Cu toate acestea, o metodă copil ar trebui să potrivească declarația tipului de returnare cu cea a metodei părinte atunci când înlocuiți o metodă părinte. Dar dacă un tip de returnare nu este definit de metoda părinte, atunci o metodă secundară îl poate defini.

Generator de expresii de returnare

Această caracteristică a PHP este construită pe o funcționalitate lansată în PHP 5.5 numită funcționalitate generator. Permite utilizarea unei instrucțiuni return în generator și permite returnarea expresiei finale. Cu toate acestea, returnarea prin referință este restricționată. Valoarea poate fi obținută folosind o nouă metodă generator „ getReturn()” , care este utilizată numai atunci când generatorul a terminat de a genera valori.

Cu toate acestea, capacitatea de a returna în mod clar o valoare finală folosind un generator este cu siguranță o abilitate utilă de posedat. Acest lucru se datorează faptului că permite revenirea completă a unei valori finale, de către un generator, care poate fi gestionată în special de un cod de client care execută generatorul. În comparație, acest lucru este mult mai simplu decât a forța un cod de client să verifice mai întâi dacă valoarea finală este obținută sau nu și apoi să gestioneze valoarea în special.

Opțiuni de sesiune

Session_start() recunoaște acum o mulțime de opțiuni care suprascriu diferitele directive de configurare a sesiunii stabilite în php.ini.

Aceste opțiuni au fost, de asemenea, extinse pentru a facilita session.lazy_write, care rămâne activat în mod implicit și face ca PHP să suprascrie orice fișier de sesiune doar cu modificarea datelor de sesiune și read_and_close . Aceasta este o opțiune care poate fi accesată doar de session_start() pentru a confirma că datele sesiunii trebuie citite și apoi sesiunea trebuie închisă imediat, rămânând neschimbată.

Îmbunătățiri de securitate în PHP 7.2.0

Iată îmbunătățirile recente de securitate implementate în PHP 7.2.0.

Algoritmul Argon 2 în Password Hash

Argon 2, câștigătorul concursului de hashing parole în 2005, este un algoritm de hashing puternic. Argon2 este în plină recunoaștere ca standard de internet universal. În prezent, algoritmul este considerat a fi mai rentabil și mai sigur decât Bcrypt, un alt algoritm de hashing. Argon2 nou încorporat poate fi utilizat prin intermediul funcției – password_hash().

În timp ce Bcrypt ia în considerare un singur factor de cost, noul Argon2 ia în considerare următorii trei factori de cost:

  1. Un cost de timp - definește numerele de iterații ale algoritmului de hashing
  2. Un cost de memorie - definește numerele KiB care trebuie utilizate în timpul hashingului.
  3. Un factor de paralelism - stabilește numărul de fire paralele care vor fi consumate în timpul hashingului.

Factorii de cost impliciti sunt definiți de cele trei noi constante, după cum urmează:

  • PASSWORD_ARGON2_DEFAULT_TIME_COST
  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2-DEFAULT-THREADS
Lib-sodiu Înlocuiește Mcyrpt

O altă îmbunătățire majoră a PHP 7.2.0 este eliminarea bibliotecii criptografice convenționale Mcrypt din nucleul PHP și adăugarea Libsodium.

Mcrypt a fost considerat a fi abandonware și o restricție la creșterea limbii. De aceea a fost înlocuit cu Libsodium în PHP 7.2.0. Libsodium este o bibliotecă de criptografie avansată care oferă criptare autentică împreună cu o criptare eficientă cu curbe eliptice.

Libsodium este compus din algoritmi aleși cu atenție care sunt implementați de experți în securitate pentru a preveni vulnerabilitățile canalelor laterale. Cu alte cuvinte, Libsodium este o bibliotecă multilingvă și multiplatformă pentru decriptare, criptare, hashing parole, semnătură și multe altele.


Caracteristici și funcții depreciate

Următoarele sunt câteva dintre funcțiile și caracteristicile depreciate ale PHP 7.2.0, care se așteaptă să fie eliminate înainte de lansarea PHP 8.0.

Gmp_random() este considerată o caracteristică dependentă de platformă și este probabil să fie depreciată. În schimb, vor fi folosite gmp_random_rage() și gmp_random_bits() .

(dezactivat) distribuția este o altă expresie care returnează de obicei nulă și, prin urmare, este considerată inutilă.

Each() este utilizat pentru a itera peste un foreach() ca o matrice, dar foreach() este preferat din cauza vitezei sale mai mari.

Spl_autoload_register din PHP 5.1 a înlocuit funcția _autoload . Dar acum este probabil ca deprecierea să apară atunci când funcția este întâlnită în timpul compilării.

mbstring .fucc_overload a fost, de asemenea, setat pentru depreciere.

Funcția assert() confirmă afirmația dată și ia măsuri adecvate dacă există un rezultat FALS . Utilizarea assert() cu argumente șir va fi depreciată deoarece provoacă o vulnerabilitate RCE.

Variabila $php_errormsg este construită în domeniul local în timp ce se primește o eroare non-fatală. Dar acum, cu versiunile PHP 7.2.0, error_clear_last și error_get_last vor fi folosite în schimb.

$errcontext este probabil să fie depreciat, deoarece această funcționalitate cauzează probleme de optimizare. Deoarece $errcontext este folosit pentru a modifica toate obiectele și referințele din domeniul curent, această funcționalitate este cu greu folosită.

Create_function() are multe probleme de securitate. În plus, are, de asemenea, utilizarea memoriei și probleme de performanță proastă.

De ce ar trebui un dezvoltator WordPress să folosească PHP 7.2.0?

Actualizările recente la PHP aduc caracteristici noi și măsuri de securitate îmbunătățite. Aceasta poate include factori precum criptografia modernă, completări la funcțiile de bază și viteza de încărcare mai mare pentru diferite site-uri.

Beneficiile utilizării PHP

PHP este un limbaj extrem de compatibil care poate fi folosit cu aproape toate standardele globale de baze de date și server (de exemplu, PostgreSQL, MySQL, Sybase, Oracle, Microsoft SQL Server și Informix). Oferă performanță rapidă, susținută de o comunitate open source.

Este folosit pentru o varietate de scopuri, cum ar fi generarea de fișiere și pagini dinamice. PHP vă permite să gestionați și să stocați informații într-o bază de date a site-ului. Permite utilizatorilor să cripteze datele folosind funcții de securitate și restricționează accesul neautorizat la site-uri web.

PHP este folosit de multe site-uri web renumite, cum ar fi Yahoo, Facebook și Wikipedia.

Și mai important, cea mai recentă actualizare a PHP 7.2.0 oferă îmbunătățiri importante de securitate, funcții noi interesante și îmbunătățiri de performanță.

Performanța PHP 7.2.0

Conform benchmark-urilor Phoenix, PHP 7.2.0 este cu 13% mai rapid decât 7.1 și cu aproape 20% mai rapid decât 7.0. În comparație cu PHP 2.6 (folosit încă de 40% dintre utilizatorii PHP), este cu aproape 25% mai rapid.

Există multe teste care susțin aceste statistici și constatări. Benchmark-ul oficial PHP arată că PHP 7 este de două ori mai eficient și de două ori mai rapid decât 5.6. PHP 7 are jumătate din latență. De asemenea, alte benchmark-uri precum Kinsta sugerează că PHP 7 ar putea fi de până la trei ori mai rapid decât versiunile anterioare.

După cum sa discutat mai sus, principalul motiv pentru performanța îmbunătățită a PHP 7.2.0 este includerea de caracteristici avansate și deprecieri ale funcțiilor vechi. Acesta este exact ceea ce face ca această versiune de PHP să fie perfectă pentru utilizatorii WordPress. Cu toate acestea, dezvoltatorii trebuie să verifice codul și să actualizeze funcțiile depreciate pentru a se asigura că totul este compatibil.

Suportul de securitate al PHP 7.2.0

PHP 7.2.0 nu mai oferă suport de securitate. Cu toate acestea, suportul critic va fi încă disponibil până la sfârșitul anului 2018. Comunitatea PHP nu mai oferă suport pentru probleme minore și erori. Vestea bună este că cea mai recentă actualizare a PHP 7.2.0 va asigura că actualizările avansate de securitate funcționează corect, iar proiectul va fi susținut continuu de comunitatea PHP.

Libsodium este atât cea mai importantă, cât și cea mai îmbunătățită caracteristică care a migrat de la PHP mai vechi la PHP 7.2.0. Din fericire, Libsodium este foarte ușor de actualizat.

Dacă intenționați să actualizați la PHP 7.2.0, asigurați-vă că codul dvs. este compus din integrare și teste unitare. Astfel de teste vor ajuta la identificarea oricăror probleme legate de aplicație înainte ca aceasta să apară ca o eroare într-un mediu live.

Pe scurt
PHP 7.2.0 este cu siguranță o actualizare majoră în comparație cu versiunile anterioare, cum ar fi PHP 5.6. Pe măsură ce actualizați codul de la PHP 5.6 la PHP 7, s-ar putea să întâlniți unele incompatibilități, atât în ​​bibliotecile de care depinde codul, cât și în codul în sine. Cu toate acestea, beneficiile adoptării PHP 7.2 vor face ca eforturile dumneavoastră să merite.

Deoarece PHP 7.2 este mult mai rapid decât versiunile mai vechi de PHP, acest lucru permite utilizatorului să ofere un serviciu îmbunătățit utilizatorilor site-ului lor prin implementarea codurilor avansate ale limbajului PHP.

Deci, sunteți gata să treceți la noul PHP 7.2? Dacă nu l-ați actualizat încă, atunci este un moment bun pentru a începe tranziția. Este timpul să verificați codurile și să vă actualizați scripturile.

Spuneți-ne cum ați găsit noile caracteristici și funcții îmbunătățite ale PHP 7.2.0 în secțiunea de comentarii de mai jos!