Cum afectează modificările din noul PHP 8 performanța site-ului dvs. WordPress

Publicat: 2023-05-04

Fiind unul dintre cele mai bune limbaje de programare de astăzi, PHP oferă noi modalități de a face dezvoltarea web și codificarea mai flexibile. Odată cu introducerea PHP 8.0 și PHP 8.1, PHP își propune să aducă mai mult la masă cu noi funcții care oferă o sintaxă, securitate și multe altele mai bune.

Continuați să citiți mai jos pentru a afla mai multe despre ce este nou cu PHP 8.0 și toate funcțiile sale speciale. Descoperiți toate actualizările și îmbunătățirile majore din versiunile anterioare și modul în care acestea vă pot afecta site-ul WordPress.

Codare PHP

Înțelegerea actualizării PHP 8.0

Actualizarea PHP 8.0 oferă modificări semnificative dezvoltatorilor și site-urilor web la nivel global. Lansat în 2020, a promis noi funcții și îmbunătățiri care se laudă, în general, cu performanțe, sintaxă, siguranța tipului și gestionarea erorilor mai bune prin cererea de comentarii (RFC) și alte funcții inovatoare.

În timp ce diferența de performanță nu este la fel de remarcabilă ca cea dintre PHP 5 și PHP 7, PHP 8.0 oferă îmbunătățiri constante cu fiecare lansare. În plus, majoritatea modificărilor din PHP 7 până la PHP 7.4 sunt în mare parte depreciate.

Atât PHP 8.0, cât și PHP 8.1 introduc noi funcții pentru a ajuta dezvoltatorii să codifice mai rapid și mai flexibil. Următoarele sunt unele dintre cele mai demne de remarcat oferte pe care dezvoltatorii ar trebui să le ia în considerare.

Compilare just-in-time

Compilatorul Just-in-time sau JIT este una dintre cele mai bune funcții noi din cele mai recente versiuni PHP. Prin acest RFC, dezvoltatorii pot ocoli compilarea pentru a îmbunătăți considerabil performanța și utilizarea memoriei.

PHP implementează acest RFC ca parte aproape independentă a Opcache. Cu JIT activat, dezvoltatorii pot rula coduri prin CPU în loc de programe terțe precum Zend VM, mărind viteza de calcul.

Pe lângă soluțiile de codare numerică mai bune, JIT oferă și performanțe potențial mai bune pentru codurile de aplicații web PHP „tipice”. În plus, posibilitatea de a muta mai mult cod din C în PHP, deoarece PHP va deveni acum mai rapid prin JIT.

În plus, PHP 8.0 introduce două compilatoare JIT: urmărire și 1.5. Dintre cele două, JIT-ul de urmărire oferă cea mai promițătoare, arătând de aproximativ trei ori performanța pe benchmark-uri sintetice. Între timp, 1.5 are o îmbunătățire de două ori mai mare decât aplicațiile de lungă durată.

Argumente numite

Cea mai recentă versiune PHP oferă argumente numite pentru a extinde parametrii poziționali existenți. Acum, dezvoltatorii pot transmite date de intrare unei funcții bazate pe numele parametrului în loc de poziție. Din această cauză, argumentele numite oferă dezvoltatorilor diverse avantaje.

În primul rând, le permite să creeze coduri mai ușor de înțeles, deoarece sensul argumentului este auto-documentat. De asemenea, este independent de ordine, ceea ce înseamnă că dezvoltatorii nu vor trebui să transmită argumente unei funcții în același mod ca semnătura funcției.

Mai mult decât atât, este, de asemenea, posibil ca dezvoltatorii să combine argumente cu argumente poziționale. În plus, le permite să specifice argumentele pe care doresc să le schimbe. În acest fel, nu vor trebui să ajusteze argumentele dacă nu vor să suprascrie valorile implicite.

Argumentele numite sunt, de asemenea, utile cu declarațiile de clasă sau de tip.

Tipuri de uniuni 2.0

În versiunile anterioare PHP, dezvoltatorii puteau specifica doar tipuri de uniuni în adnotările documentului. PHP nu a oferit suport cu excepția „?Type syntax” și a clasei „iterable”.

PHP 8.0 își propune să susțină tipuri de uniuni în semnăturile de funcții prin intermediul tipurilor de unire 2.0 RFC. Prin această actualizare, dezvoltatorii nu se vor mai baza pe documentația inline.

În plus, suportarea tipurilor de uniuni în PHP permite dezvoltatorilor să mute diferite clase de informații din phpdoc în semnături de funcții. Din acest motiv, ele pot obține diverse beneficii, inclusiv prinderea greșelilor din timp, prevenirea depășirii informațiilor de tip și verificarea tipurilor în timpul moștenirii.

Operator Nullsafe

Înainte, dezvoltatorii nu puteau folosi operatorul de coalescere nulă la apelurile de metodă. Ar avea nevoie de verificări intermediare sau ajutoare opționale din cadrul unor terțe părți. Cu toate acestea, cu noul operator nullsafe, dezvoltatorii pot avea astfel de funcții pe metode. Înseamnă că dezvoltatorii pot folosi acum un lanț de apeluri în loc de condiții de verificare nulă. Dacă evaluarea unui element din lanț eșuează, întregul lanț de execuție se oprește și întregul lanț evaluează „null”.

Atribute V2

Cunoscute în mod obișnuit ca adnotări în alte limbi, atributele sunt metadate structurate pe care dezvoltatorii le pot folosi pentru a specifica proprietăți pentru obiecte, elemente sau fișiere. Dezvoltatorii pot folosi, de asemenea, această caracteristică pentru a adăuga metadate la toate numele claselor fără a analiza doblocks.

Până la PHP 7.4, singura modalitate de a adăuga metadate la declarațiile de clase era prin intermediul comentariilor documentare. Cu noul RFC Attributes V2, PHP definește atributele ca fiind structurate, metadate sintactice pe care dezvoltatorii le pot folosi pentru a adăuga declarații de tipuri, funcții, proprietăți, metode, parametri și constante.

Acum, dezvoltatorii pot adăuga atribute înainte sau după un comentariu docblock și pot avea unul sau mai multe dintre ele cu una sau mai multe valori asociate.

Potriviți expresia V2

Cei familiarizați cu „expresii de comutare” știu deja despre ce este vorba despre expresiile de potrivire. Numai expresiile de potrivire sunt o versiune mai bună a „switch”.

De exemplu, oferă o semantică mai sigură, care permite dezvoltatorilor să returneze valori o singură dată. De asemenea, poate combina condiții fără a „scăpa” valorile. În plus, nu face nicio constrângere de tip și folosește comparații stricte de tip.

Promovarea proprietatii constructor

Acest RFC introduce o sintaxă mai concisă pentru a ajuta la simplificarea declarației de proprietate, care urmărește să îmbine constructorul și definiția parametrului. Acum, dezvoltatorii au o modalitate mai bună de a declara proprietăți sau parametri făcându-le mai puțin redundante și mai scurte. Acest RFC le permite dezvoltatorilor să reducă codul standard pe care îl scriu pentru obiectele de valoare.

Comparații mai sănătoase șir cu număr

PHP 8.0 oferă acest RFC pentru a face comparațiile de șiruri numerice mai rezonabile. Pentru a face o astfel de sarcină înainte, PHP ar arunca mai întâi șirul într-un număr, apoi ar efectua comparația între numere întregi sau flotanți. Deși această practică a fost utilă în diferite moduri, ar putea crea erori fatale cu funcția site-ului și implicațiile de securitate.

După cum am menționat, acest RFC își propune să ofere comparații între șir și număr un comportament mai rezonabil. Va folosi o comparație de numere atunci când se compară cu un șir numeric sau va converti numărul într-un șir și va folosi o comparație de șir.

Erori de tip consistente pentru funcțiile interne

Când se transmite un parametru de tip ilegal, funcțiile interne și cele definite de utilizator se comportă diferit. Funcțiile interne nu afișează „TypeError” precum funcțiile definite de utilizator. În schimb, emit avertismente și le returnează ca „nule”.

PHP 8.0 abordează aceste neconcordanțe propunând un RFC care face ca API-urile interne de analiză a parametrilor să genereze o „ThrowError” în cazul nepotrivirii tipului de parametru. Din această cauză, toate comportamentele funcțiilor interne sunt mai consistente.

Cod PHP

Noi clase, interfețe și funcții

Printre noile modificări notabile PHP 8.0 se numără clasa WeakMap. În general, o hartă slabă este o colecție de date sau obiecte cu chei slab referite. Datele de referință slabă înseamnă că nu există nicio împiedicare a distrugerii acestora, ceea ce duce la performanțe slabe și scurgeri de memorie.

PHP 7.4 acceptă referințe slabe pentru a păstra o referință la date care nu împiedică distrugerea acestora. Cu toate acestea, referințele brute, slabe sunt limitate la ele însele.

Pe de altă parte, hărțile slabe sunt mult mai frecvente în practică. Dar este imposibil să implementezi o hartă slabă eficientă pe lângă referințele slabe PHP. Cu clasa WeakMap din PHP 8.0, dezvoltatorii pot face exact asta. Ei pot crea obiecte ca chei slabe de hartă pe care dezvoltatorii sau programul le pot distruge. Asta înseamnă că PHP va considera și colecta aceste obiecte ca gunoi dacă nimic nu le face referire pentru o perioadă lungă de timp.

Un alt plus la multele funcții utile PHP 8.0 este interfața Stringable. Acest RFC adaugă automat această funcție la toate clasele care implementează metoda „__toString()”. Înseamnă că dezvoltatorii nu vor trebui să codifice manual interfața de fiecare dată când o clasă implementează codul.

În versiunile anterioare de PHP, „strstr” și „strpos” erau opțiuni standard pentru ca dezvoltatorii să caute un ac în interiorul unui șir. Din păcate, mulți au văzut ambele funcții ca fiind insuficient de intuitive și pot fi confuze pentru noii dezvoltatori PHP. Acum, ei pot căuta în interiorul unui șir mai ușor cu noua funcție „str_contains”.

În plus față de str_contains, PHP 8.0 oferă „str_starts_with()” și „str_ends_with()” pentru a ajuta la o mai bună căutare cu ac în interiorul unui șir.

Alte funcții noi includ implementarea obiectului „fdiv(),” „get_debug_type(),” „get resource_id(),” „token_get_all()” și API-urile DOM Traversal și Manipulation.

Tip sistem și tratarea erorilor

PHP 8.0 oferă, de asemenea, diverse îmbunătățiri ale sistemului și de tratare a erorilor. Una dintre ele este de tip mixt. Un „tip mixt” ajută la prevenirea tipurilor lipsă din cod. În PHP, tipurile lipsă ar putea însemna că o funcție returnează null, unul dintre mai multe tipuri sau una care nu poate fi indicată de tip.

În general, „mixt” ar putea însemna matrice, boolean, apelabil, int, float, null, obiect, resursă și șir. Prin noul tip mixt, dezvoltatorii pot adăuga tipuri parametrilor, proprietăților clasei și returnărilor de funcție. Acest lucru va ajuta să indicați că informațiile de tip nu au fost uitate, ci mai degrabă specificate mai precis.

O altă îmbunătățire notabilă pe care o aduce PHP 8.0 este tipul de returnare static. Înainte de PHP 8.0, „self” putea reveni, dar „static” nu. Acum, având în vedere natura tactilă dinamică a PHP, dezvoltatorii vor găsi această caracteristică incredibil de utilă.

Alte îmbunătățiri ale sistemelor de tip și de gestionare a erorilor pe care le oferă PHP includ validarea metodelor de trăsătură abstractă, semnăturile corecte ale metodelor magice, moștenirea cu metode private și avertismentele reclasificate ale motorului. De asemenea, are erori fatale pentru semnăturile metodelor incompatibile și obiectele opace în loc de resurse pentru extensiile Curl, Gd, Sockets, OpenSSL, XMLWriter și XML.

Alte actualizări de sintaxă

PHP 8.0 oferă, de asemenea, multe îmbunătățiri de sintaxă. De exemplu, dezvoltatorii pot folosi acum „arunca” ca expresie în loc de declarație, făcând posibilă aruncarea de excepții în locuri diferite.

Mai mult, PHP 8.0 are și sintaxa variabilă RFC, care ajută la rezolvarea multiplelor inconsecvențe în sintaxa variabilă a programului. Prin acest RFC, dezvoltatorii se pot ocupa acum de cazuri mici trecute cu vederea.

În plus, PHP 8.0 oferă și capturi fără captură. Înainte de actualizare, dezvoltatorii ar stoca o excepție într-o variabilă dacă doreau să o prindă. În cazul capturilor fără captură, aceștia pot omite variabila.

În plus, dezvoltatorii pot acum să trateze numele cu spațiu de nume ca un singur simbol și să permită „::class” pe obiecte. În plus, permite virgulele finale în listele de parametri și listele de utilizare de închidere RFC.

WordPress

Cum afectează noul PHP site-ul dvs. WordPress

În prezent, WordPress acceptă versiunile PHP 7.4, 8.0 și 8.1. Din păcate, unii utilizatori sunt reticenți să facă upgrade, deoarece noile versiuni sunt incompatibile cu temele și pluginurile lor preferate.

Între timp, problemele de compatibilitate ar apărea numai dacă nu folosesc cele mai recente versiuni WordPress, cum ar fi 5.9 și 6.0. Unii preferă să nu facă acest lucru, deoarece preferă să lucreze cu software vechi sau învechit, ceea ce îi împiedică să facă upgrade la cea mai recentă versiune PHP. Din acest motiv, ei tind să întâmpine mai multe probleme în procesul de dezvoltare.

Pe de altă parte, dezvoltatorii care au încercat cea mai recentă versiune de PHP pe site-urile lor WordPress experimentează o dezvoltare mai bună și mai ușoară datorită noilor sale funcții și îmbunătățiri. PHP 8.0 și 8.1 oferă o gestionare excelentă a erorilor și optimizări. În plus, versiunea 8.1 intenționează să aibă asistență activă și actualizări de securitate în următorii ani.

Pregătirea site-ului dvs. WordPress pentru actualizarea PHP

După cum am menționat, PHP 8.0 are probleme specifice de compatibilitate cu versiunile mai vechi de WordPress. Pentru o experiență de dezvoltare fără probleme, cel mai bine este să vă actualizați site-ul la versiunea 5.9 sau 6.0 pentru a suporta noile funcționalități PHP.

Dacă sunteți reticent să faceți upgrade site-ului dvs. WordPress la cea mai recentă versiune, îl puteți testa mai întâi cu diverse instrumente online pentru a vedea dacă puteți continua fără erori. Mai mult, înainte de a vă configura site-ul pentru noul PHP 8.0, cel mai bine este să-l clonați mai întâi pentru a evita pierderea datelor din cauza erorilor. După ce ați făcut-o, testați-o pe cea mai recentă versiune PHP pentru a vedea dacă sunt compatibile.

Dacă anumite teme și pluginuri nu funcționează cu PHP 8.0, trebuie să le actualizați la cele mai recente versiuni. În loc să vă întoarceți la vechiul PHP, contactați echipa de asistență a temei sau a pluginului și informați-i despre problema de compatibilitate. Ar trebui să actualizeze caracteristicile site-ului dvs., astfel încât să poată funcționa fără probleme cu PHP 8.0 și PHP 8.1.

Îmbunătățește site-ul tău WordPress

Odată cu tehnologia modernă care progresează rapid, cererea pentru site-uri mai competitive și mai funcționale continuă să crească. Asta înseamnă că a fi reticent în a te adapta la noile tendințe ar putea pune site-urile în urmă.

Astăzi, limbajul de programare PHP oferă noi funcții care ajută dezvoltatorii să codifice mai bine decât înainte, datorită versiunilor lor 8.0 și 8.1. În timp ce noile funcții de astăzi aduc deja atât de multe pentru dezvoltatori, PHP promite mai multe pentru site-urile web de mâine.