WordPress și PHP 8 – Compatibilitate și beneficii!
Publicat: 2021-01-04Majoritatea pasionaților tehnologiei sunt încântați de PHP 8.0 și, cu siguranță, schimbările sunt uriașe de data aceasta. toată lumea va consuma ceva timp pentru a înțelege compatibilitatea, configurațiile, beneficiile etc. ale PHP 8 și, printre toate, una dintre cele mai mari întrebări care apare este – „este WordPress deja compatibil cu PHP 8, iar dacă nu, atunci ce acțiuni sunt necesare.”
Ei bine, de îndată ce PHP 8 este lansat, timpul nostru de experți a ajuns la cel mai profund nivel de testare, iar rezultatul poate șoca pe oricine! Da, știm totul acum și ne face plăcere să ne etalăm rapoartele și rezultatele degustărilor.
Nu doar că vă vom arăta ce s-au schimbat, dar vă vom oferi și un sfat pur cu privire la dacă ar trebui să actualizați la PHP 8 sau nu.
Atât de multe schimbări de ruptură în PHP 8: Dar de ce?
PHP 8 este o actualizare uriașă a PHP și este o practică obișnuită să eliminați negativele din versiunile majore din gama recentă de versiuni minore. Pentru PHP 8 foarte vorbit, mai multe modificări de ruptură au fost reduse în versiunile anterioare 7.*.
Prin urmare, pentru proiectele care au fost actualizate cu atenție de-a lungul anilor, reparând API-urile derogate, nu ar trebui să fie deloc greu de actualizat. Spunând adevărul, versiunile PHP 7.* au observat un set mult mai mare de deprecieri în comparație cu versiunile anterioare de PHP.
Am spune că PHP 5.6 la PHP 7 a fost o migrare destul de simplă, dar trecerea de la 7.x la 8 ar putea fi oarecum dureroasă, mai ales pentru vechile baze de cod, inclusiv WordPress, pe lângă câteva plugin-uri disponibile.
Cu siguranță, pentru baze de coduri bine tastate sau baze de cod actualizate cu cele mai recente versiuni PHP, probleme mari nu vor apărea. Cu toate acestea, realitatea este că WordPress nu este o astfel de bază de cod.
Este WordPress deja compatibil cu PHP 8?
Spunând sincer, poate WordPress este deja compatibil cu PHP 8, dar sigilarea acestor cuvinte nu este posibilă, totuși. WordPress vizează să fie întotdeauna compatibil cu cele mai recente versiuni de PHP . Cu toate acestea, am analizat în profunzime cele mai mari preocupări mai târziu în acest ghid.
Am făcut o treabă uimitoare în ceea ce privește găsirea soluțiilor perfecte pentru majoritatea problemelor de compatibilitate care ar putea fi găsite folosind strategiile disponibile. Cu siguranță ne vom scufunda mai adânc în ceea ce a fost acolo și problemele care există cu ele.
Ce schimbări de performanță urmează?
Caracteristica majoră, potențial interesantă, care vine cu PHP 8 este compilarea și depanarea JIT (Just In Time). După cum știm, PHP este un limbaj interpretat, ceea ce înseamnă că este tradus în codul mașinii atunci când rulează.
JIT urmărește codul care este folosit frecvent și lucrează la optimizarea traducerii codului automat pentru a-l face reutilizabil. Acum, acest lucru poate duce la o îmbunătățire uriașă a performanței pentru o anumită funcționalitate.
Includerea JIT în diferite limbi, de exemplu, JavaScript, a condus istoric la o explozie de noi aplicații. De exemplu, mașinile virtuale care rulează în JS ar fi lipsit de imaginație în primele zile ale web-ului. Câteva sarcini care ar fi necesitat instalarea modulelor pe server în trecut vor fi practice folosind bibliotecile de bază PHP.
Deocamdată, creșterea reală a performanței pentru aplicațiile web precum WordPress este minimă. În plus, va dura mult timp înainte ca un dezvoltator sau un utilizator mediu WordPress să culeagă avantajele acestei noi funcții.
Există câteva alte funcții noi pentru a aduce ușurință în viața dezvoltatorilor; este puțin probabil ca acestea să fie folosite în temele și pluginurile WP în viitorul apropiat, deoarece majoritatea ar rupe compatibilitatea cu versiunile anterioare ale PHP încă utilizate de mai multe site-uri WordPress.
Cum să actualizezi PHP pentru site-ul tău WordPress?
În acest ghid, vom descrie cât de convenabil puteți actualiza PHP la cea mai recentă versiune, cel mai important, fără a vă distruge site-ul WordPress.
Dacă sunteți dornic să cunoașteți calea, atunci verificați versiunea curentă PHP, apoi actualizați WordPress la cea mai nouă versiune. După aceea, instalați „scanerul PHP one.com” și executați o scanare pentru a remedia potențialele probleme. În plus, actualizați PHP la cea mai recentă versiune și verificați dacă site-ul dvs. funcționează conform așteptărilor sau nu.
Să arătăm întregul proces.
Pasul 1: Verificați versiunea PHP actuală
La început, trebuie să verificați cu ce versiune PHP utilizați în prezent. Puteți obține informații despre versiunea PHP actuală a site-ului dvs. din pagina phpinfo.
Dacă rulați pe cPanel, puteți vedea versiunea PHP din articolul cum să vizualizați și să schimbați versiunea PHP în cPanel.
În cazul în care utilizați versiunea PHP 7.3 sau mai mare, atunci totul este în regulă. Pentru cei care au PHP 7.2, este nevoie de o actualizare. Vă rugăm să apreciați pasul 2.
Pasul 2: Actualizați WordPress la cea mai recentă versiune
Asigurați-vă că nucleul WordPress și toate pluginurile și temele sunt actualizate la cea mai recentă versiune dacă doriți cu adevărat să evitați orice defecțiune.
- Conectați-vă la administratorul WordPress și faceți clic pe Tablou de bord > Actualizări .
- Verificați dacă aveți cea mai recentă versiune de WordPress instalată și dacă toate temele și pluginurile sunt actualizate. Actualizați-vă WordPress la cea mai recentă versiune acum.
Pasul 3: Instalați „scanerul PHP one.com”.
- În administratorul WordPress , atinge one.com > Plugins .
- Găsiți scanerul PHP one.com și atingeți Instalați acum .
- Acum, faceți clic pe Activare și treceți la pasul următor.
Pasul 4: executați o scanare și remediați problemele potențiale
- În meniul din stânga, atingeți scaner PHP .
- Atingeți versiunea PHP 7.4 , apoi „ Toate temele și pluginurile ”, apoi atingeți Porniți scanarea .
- Puteți continua odată ce scanarea este terminată.
- Poti avea trei rezultate:
– Compatibil = Înseamnă că totul este bine!
– Avertisment = Înseamnă că ar trebui să funcționeze, dar ar putea da probleme cu viitoarea versiune PHP.
– Eroare = Nu este atât de bine, cu siguranță va cauza probleme după actualizare.
Remediați orice teme sau pluginuri care citesc erori, fie actualizând-o la cea mai recentă versiune, fie înlocuind-o cu un plugin alternativ care oferă aceeași funcționalitate.
Sfat: Vă recomandăm să utilizați doar acele pluginuri care folosesc pluginuri care sunt actualizate în mod regulat și nu aduc probleme de compatibilitate cu cea mai recentă versiune de WordPress. În plus, este o practică bună să eliminați orice plugin nedorit pentru a îmbunătăți performanța site-ului.
Pasul 5: Actualizați PHP la versiunea 8.0
Sunteți gata să actualizați PHP. Vă recomandăm să activați simultan mesajele de eroare PHP. În cazul în care există o problemă cu codul, veți vedea mesaje de eroare care vă spun ce o cauzează și, de asemenea, unde se află exact.
- În panoul de control, reveniți la setările PHP și bazei de date .
- Derulați în jos la mesaje de eroare PHP .
- Faceți clic pe Actualizare după ce ați setat mesajele de eroare la Activat .
- Direct sub aceasta, schimbați versiunea și atingeți Actualizare .
Pasul 6: verificați dacă site-ul dvs. funcționează conform așteptărilor.
Acum, ați actualizat versiunea PHP și va dura cel puțin 20 de minute înainte ca modificările să se aplice. Dacă site-ul dvs. primește o mulțime de vizitatori, intervalul de timp se poate extinde chiar și la câteva ore. Acesta este motivul pentru care vă recomandăm să vă verificați site-ul de minim câteva ori în următoarele 24 de ore.
În cazul în care site-ul dvs. nu funcționează împotriva a ceea ce vă așteptați, atunci cea mai probabilă problemă este tema dvs. sau orice plugin. Pentru a afla care este exact cauza problemelor:
- Treceți temporar la tema WordPress implicită, am spune „Twenty Seventeen”.
- Selectați toate pluginurile instalate și dezactivați-le cu totul.
- Activați din nou temele și toate pluginurile, unul câte unul și continuați să verificați de fiecare dată dacă site-ul dvs. încă funcționează sau nu. Puteți prinde vinovatul astfel.
Dacă vorbim din punct de vedere tehnic, atunci compatibilitatea actualului seara WordPress cu foarte discutat PHP 8 este la un nivel similar cu cel din versiunile WordPress chiar înainte de apariția unei noi versiuni de PHP.
Testarea noastră a fost la fel de substanțială, remedierea a fost la fel de meticuloasă, iar nivelul de remediere a problemelor a fost la fel de mare ca orice remediere a compatibilității PHP din nucleul WordPress. Cu toate acestea, dacă nu urmați acest ghid, nu veți putea înțelege provocările de compatibilitate și nu veți putea obține beneficii maxime din PHP 8.
Cantitatea uriașă de modificări de ultimă oră și tipurile de modificări incluse în PHP 8, pe lângă câteva complexități adăugate în instrumentele între versiuni, cu siguranță fac din această provocare de compatibilitate o fiară mai mare față de ceea ce am experimentat înainte cu versiunile anterioare de PHP. Acest raport urmărește să explice același caz.
Provocări legate de compatibilitatea WordPress și PHP8
Vă vom arăta câteva strategii pe care le puteți implementa pentru a face o bază de cod existentă compatibilă cu PHP 8.
- Instrumente de analiză statică, cum ar fi PHPCompatibility, pentru a detecta probleme sintactice.
- Testare automată pentru a detecta problemele de rulare.
- Testare manuală pentru a detecta problemele de rulare.
În funcție de acoperirea suitei dvs. de testare și de proporția modificărilor sintactice și a duratei de execuție, aceste strategii servesc foarte bine pentru a repara compatibilitatea bazei de cod cu o nouă versiune de PHP (în prezent se discută despre PHP 8).
Într-adevăr, în cazul PHP 8 și WordPress, există câteva provocări suplimentare care fac dificilă bazarea pe aceste strategii pentru a asigura compatibilitatea perfectă a WordPress cu PHP 8. Mai jos vom raporta despre strategiile pe care le-am implementat. pentru WordPress și partajați rezultatele.
Instrumente de analiză statică
Din cauza naturii câtorva modificări în PHP 8.0, problemele care pot fi detectate folosind analiza statică sunt limitate. În acele circumstanțe, în care analiza statică pare să depășească potențialele lor tradiționale și planuri de a urmări valoarea variabilelor și constantelor și tipul de rulare, rezultatele unor astfel de scanări vor fi cu siguranță predispuse la fals pozitive.
În plus, PHP Compatibility este singurul instrument de analiză statică menit să găsească probleme legate de compatibilitatea între versiuni PHP.
Pe lângă compatibilitatea PHP, alte instrumente de analiză statică raportează o gamă mai mare de probleme. Prețuirea rezultatelor pentru a detecta problemele, care sunt legate de compatibilitatea între versiunile PHP și de fapt corecte, necesită destul de mult timp și necesită cunoștințe aprofundate legate de instrumente, în special despre configurarea acestora pentru cel mai mic zgomot.
Simultan, aceste instrumente se află într-o instabilitate constantă, încercând să continue cu modificările din versiunea PHP și actualizând eventualele scanări. Prin urmare, ne putem aștepta ca aceste instrumente să detecteze și mai multe probleme în viitorul viitor.
Deci, independent de ceea ce a fost deja și poate fi găsit în continuare în acest moment, sunt șanse ca aceste instrumente să descopere încă mai multe probleme în viitorul (aproape).
Scanarea WordPress cu PHPCompatibility
„__destruct() nu va mai fi apelat după die() în __construct()” este o altă problemă PHP 8 găsită de PHPCompatibility. Acest lucru este perfect detectat de scaner. Cu toate acestea, după o analiză ulterioară, s-a constatat că nu este problematică în acest caz.
Pe lângă asta, PHPCompatibility a detectat o problemă în codul care este folosit de „Editorul de plugin/temă”. Analizele codului implicat au determinat existența unei supravegheri subiacente în cod. În editor, WordPress așteaptă cu nerăbdare să facă o analiză minimă a codului; cu toate acestea, nu ia în considerare codul PHP 5.3+.
Deși ținând cont de modificările relevante din PHP8, această neglijare devine acum mai complexă de rezolvat. Am efectuat scanări cu PHPCompatibility cu versiunea dezvoltată, iar rezultatele, așa cum ne așteptam, au fost mult diferite de cele pe care le-am obținut cu actualizările anterioare ale PHP. Problemele detectate de scaner sunt menținute extern.
Scanarea WordPress cu Exakat
Vorbind despre cea mai recentă scanare publică care a avut loc pe 16 octombrie, bazată pe trunchiul WP, Exakat raportează 149.567 de probleme în total.
Raportul de compatibilitate PHP 8 ne arată un total de 93 de probleme. Cu toate acestea, este incomplet deoarece un număr de analiză relevant pentru PHP 8 nu este inclus în raport.
Deși ne așteptăm ca aceste rapoarte să conțină un număr mare de rezultate false pozitive, deoarece WordPress nu utilizează declarații de tip și, prin urmare, tipurile sunt extrapolate din codul găsit și tipurile afișate în docblocks, aceste probleme ar trebui totuși examinate individual.
Indiferent de faptul că doar 1% dintre problemele găsite sunt corecte, acestea vor scădea în continuare la ~450 de erori, care încă trebuie rezolvate. În afară de asta, cantitatea mare de timp necesară pentru a elimina problemele autentice de fals pozitive.
Scanarea WordPress cu PHPStan
Scanările cu PHPStan necesită un set de reguli complet personalizat pentru a obține rezultate utilizabile de la distanță și, totuși, se dovedesc a fi pline de câteva false pozitive, făcând rezultatul inutilizabil.

Notă: Nu criticăm instrumentele PHPStan, dar se datorează în mare măsură faptului că WordPress folosește cu greu declarații de tip, în timp ce, pe de altă parte, PHPStan este în primul rând înclinat către proiecte care folosesc cod modern, nu-i așa?
O scanare inițială care cuprinde cele mai elementare configurații va genera peste 20.000 de probleme. O scanare cu setul de reguli foarte personalizat menționat mai sus, care vizează în mod specific problemele legate de PHP 8, generează încă exact 580 de probleme la nivelul 5 și 2.150 de probleme potențiale suplimentare la nivelul 7. Acestea vor conține probabil câteva false pozitive și totuși vor genera încă 380 de probleme. la nivelul 8 cu o avertizare similară.
Un bilet Trac a fost deschis recent pentru a rezolva o listă de probleme pe baza unei configurații necunoscute, dar a vizat pe deplin nepotrivirile tipului de parametri trecut (nivel 5). Schița de PR este disponibilă pentru a remedia aceste probleme.
O evaluare inceptivă a acestui PR indică faptul că majoritatea remediilor propuse ar tipifica variabilele la tipul așteptat și ar ascunde problemele, nu le-ar rezolva de fapt prin verificarea corectă. Acest lucru duce la un comportament neașteptat în aplicație în cazul în care aceste modificări nu sunt însoțite de teste unitare stricte. Pe lângă asta, tit probabil va duce la o dificultate crescută în timp ce depanați erorile mai departe cu siguranță.
În prezent, nu este confirmat dacă remediile propuse sunt justificate sau dacă problemele identificate ar trebui observate ca fals pozitive.
Testare
Analiza statică poate merge atât de departe din cauza naturii schimburilor problematice în PHP8. Revizuirea și testarea manuală a software-ului se dovedește a fi o muncă atât de minuțioasă, iar oamenii sunt, de asemenea, destul de predispuși să treacă cu vederea lucrurile atunci când sunt multe de urmărit.
Acum, vorbind despre testarea efectuată de utilizatorii finali, acestea se dovedesc a fi relativ inutile, deoarece acest lucru va duce în mod normal la testarea „căilor fericite”. Dacă dorim să obținem rezultate mai fiabile, atunci avem nevoie de teste cuprinzătoare exploratorii și de regresie.
A avea teste automate de înaltă calitate și a le rula pe PHP 8 este mai important decât orice. Acest lucru va oferi indicația perfectă a problemei PHP 8.0 de așteptat.
Majoritatea pasionaților tehnologiei sunt încântați de PHP 8.0 și, cu siguranță, schimbările sunt uriașe de data aceasta. toată lumea va consuma ceva timp pentru a înțelege compatibilitatea, configurațiile, beneficiile etc. ale PHP 8 și, printre toate, una dintre cele mai mari întrebări care apare este – „este WordPress deja compatibil cu PHP 8 și, dacă nu, atunci ce acțiuni sunt necesare.”
Ei bine, de îndată ce PHP 8 a fost lansat, timpul nostru de experți a ajuns la cel mai profund nivel de testare, iar rezultatul poate șoca pe oricine! da, știm totul acum și ne face plăcere să ne etalăm rapoartele și rezultatele testelor.
Să trecem la Rularea testelor automate pe PHP 8 acum.
Rularea de teste automate pe PHP 8
PHPUnit 9.3 este prima versiune PHPUnit care este oficial compatibilă cu PHP 8.0 și a fost lansată în august 2020. Ei bine, rularea unei suite de testare automate care rulează pe PHP este dificilă, deoarece instrumentul de facto pentru testarea unitară.
Obținerea unei suită de teste automate care să ruleze pe PHP 8 ne duce la următoarea groapă ca instrument de facto pentru efectuarea testului unitar în lumea PHP; PHPUnit face în mod normal o lansare uriașă în fiecare an, cu suport pentru fiecare picătură majoră pentru versiunile PHP anterioare. Introduce modificări de ultimă oră, dar deoarece PHPUnit 9.3 este compatibil oficial cu PHP 8.0, așa cum am menționat mai sus, nu trebuie să vă faceți griji!
Știm că, cel puțin, WordPress acceptă în continuare PHP 5.6. Pentru a rula teste pe PHP 8.0, orice suită de teste legată de WordPress trebuie să fie pe deplin compatibilă cu PHPUnit 5 până la PHPUnit 9. Cu siguranță, instrumentele sunt create pentru a vă ajuta în acest sens; încă consumă efort și timp pentru a implementa aceste instrumente pentru a face o suită de testare compatibilă.
Obținerea testelor care rulează pe PHP8 pentru WordPress Core
Testele pentru WP Core trec și rulează în prezent împotriva PHP 8. Aceste teste sunt efectuate pe versiunea instalată a compozitorului PHPUnit 7.5. Chiar dacă PHPUnit 9.3 este cea mai veche versiune PHPUnit care este oficial compatibilă cu PHP 8.
Această ultimă problemă a fost rezolvată prin copierea unui număr selectat de fișiere/clase din PHPUnit 9.3 în suita de testare WordPress, excluzând clasele native ale PHPUnit din generația de încărcare automată Composer, susținând utilizarea copiilor din PHPUnit 9.3 în suita de testare WordPress. Acest lucru funcționează, deocamdată, totuși, am numi-o o soluție hackeră și s-ar putea să nu fie sustenabilă în viitor, în afară de întreținerea de care ar putea avea nevoie în prezent.
De dragul calității testelor, acest lucru a fost cu siguranță scăzut pentru început, verificarea tipului liber fiind utilizată în majoritatea cazurilor.
Devenind mai profund, un bilet Trac pentru a rezolva acest lucru a fost deschis încă din 2016. Având în vedere respectarea mai strictă a tipului în PHP, acest bilet a fost restaurat. S-a întreprins multă muncă pentru a atenua acest lucru.
În timp ce am scris, există aproximativ 800 de instanțe (676 assertEquals() adăugate la 96 assertNotEquals()). Încă se utilizează verificarea tipurilor libere – de la peste 8000 de instanțe.
În parte, afirmațiile de tip liber care au rămas sunt legitime atunci când obiectele sunt comparate; în parte, acestea trebuie cu siguranță abordate. Cu toate acestea, în prezent ar duce la eșecuri ale testelor. Acestea din urmă subliniază neajunsuri fie în teste, dar mai ocazional, în codul testat.
Testarea temelor și a pluginurilor
Există doar un mic procent din pluginurile disponibile, cele dezvoltate profesional și mai populare și au teste automatizate. În general, acest lucru este îngrijorător, deoarece un site WordPress normal rulează cu siguranță aproape 19 sau 20 de plugin-uri. Destul de multe site-uri rulează cu și mai multe plugin-uri! Este și mai rar să existe teste automatizate pentru teme.
Este o provocare să permiteți acestor suite de testare să ruleze pe PHP versiunea 8. Și, de asemenea, înainte de a obține informații despre compatibilitatea pluginurilor și temelor cu PHP 8.
Cu toate acestea, pluginurile/temele care au sunt în mare parte cele în care se poate aștepta cantitatea minimă de probleme PHP 8.0. Exclamăm așa pentru că astfel de teme/plugin-uri folosesc un model de dezvoltare profesională.
Cea mai mare cauză de îngrijorare este multitudinea de teste și teme fără teste, deoarece acestea sunt mai predispuse să fie problematice în timpul rulării cu PHP 8.
Pentru teme și pluginuri, care au teste, există în primul rând două tipuri de teste pe care le pot avea sau nu corect:
- Teste unitare . Teste de sine stătătoare care „descrisează” WP pentru a permite testarea codului pluginului. Sunt folosite cadre populare precum BrainMonkey și Mockery .
- Teste de integrare . Acum, testele de integrare sunt locul în care WordPress însuși se încarcă înainte de a rula suita de teste și va folosi codul WPcore și se va integra cu suita de teste WP.
Teste de integrare
Știm că WordPress a decis să rămână la PHPUnit 7.5. Ce inseamna asta?
Ei bine, pentru testele de integrare pentru teme și pluginuri, acestea vor fi, de asemenea, trecute la PHPUnit 7.5 (maximum).
Temele și pluginurile vor trebui fie să copieze hack-ul în WP Core pentru a-și rula perfect testele de integrare, fie, alternativ, vor trebui să folosească fișierele din WP Core. Cu toate acestea, vor trebui apoi să creeze un încărcător automat personalizat, deoarece același hack de generare a încărcării automate Composer nu poate fi utilizat.
Dacă fișierele native PHPUnit trebuie să fie împiedicate oricum să se încarce, un astfel de încărcător automat personalizat va trebui să fie cu siguranță bootstrap chiar înainte de fișierul de încărcare automată Composer.
Teste unitare
Pentru testele unitare cu ajutorul Mockery sau BrainMonkey, este necesar PHPUnit > 8 deoarece cadrul Mockery disponibil pentru PHPUnit 7.x nu este compatibil cu PHP 8.0. Prin urmare, comparabilitatea acestor suite de testare este obligatorie cu PHPUnit 5 până la 9, ceea ce adaugă cu siguranță o altă provocare.
Cum?
Sunt necesare versiuni diferite de PHPUnit pentru a rula fiecare suită de testare atunci când sunt utilizate ambele tipuri de suite de testare. Pentru a agrava această circumstanță, pluginurile vor avea în mod normal un fișier composer.lock comis pentru a se asigura că dependențele lor de rulare sunt la o anumită versiune pe care se pot baza și care este pe deplin compatibilă cu PHP 5.6.
În anumite momente, această ultimă parte este pusă în aplicare prin a avea o platformă php 5.6 fel de configurație în fișierul composer.json. Aceasta înseamnă, de asemenea, că dependențele lor de dezvoltare BrainMonkey, Mockery, PHPUnit vor fi blocate la o versiune compatibilă cu PHP 5.6. acum, asta ar împiedica cu siguranță rularea testelor pe PHP 8.0.
Puteți depăși acest lucru prin eliminarea din mers a platformei, pe lângă actualizarea fișierelor composer.lock și composer.json. Cu toate acestea, acest lucru face ca rularea testelor pe PHP 8.0 să fie mai implicată, atât în CI, cât și la nivel local, pentru dezvoltatorii săi.
Compatibilitatea PHP 8 pare oarecum complicată pe site-urile WordPress mari
Doar investigând un lanț de modificări nerezolvate în PHP 8, am putea confirma că acest lucru este predispus să provoace distrugeri uriașe pe site-uri cu motivul neclar pentru acea spargere. În anumite momente, eroarea se va întâmpla într-un singur loc, dar este generată de o temă sau un plugin într-un alt loc, iar acest lucru ar face cu siguranță aceste probleme destul de greu de depanat.
accuwebhosting.com este cu siguranță un site WordPress întreținut activ și o echipă dedicată de dezvoltatori profesioniști îl sprijină. Marea majoritate a site-urilor WordPress nu au un astfel de lux, iar atenuarea problemelor de compatibilitate pe aceste site-uri va fi cu siguranță o provocare.
Cât timp trebuie să se actualizeze dezvoltatorii?
Ciclul de viață al fiecărei versiuni de PHP este de 2 ani, iar erorile sunt remediate în această eră. Se mai adaugă un an în care problemele de securitate sunt corectate. PHP 7.4 a sosit în noiembrie 2019. Era versiunea finală a PHP 7. Înseamnă că erorile din PHP 7.4 vor fi remediate până în noiembrie 2021. Problemele de securitate vor fi remediate până în noiembrie 2022. Va ajunge la „Sfârșitul vieții” la acel moment în timp.
Prin urmare, data limită este noiembrie 2022: tot codul PHP trebuie să fie compatibil cu PHP 8 până în acest moment, sau există pericole de a rămâne blocat într-o versiune PHP potențial vulnerabilă.
Concluzie
PHP 8 va conține numeroase modificări de ultimă oră. Am descris o gamă bună a acestor modificări în raportul nostru, cele despre care experții noștri presupun că vor avea un impact mai puternic asupra WordPress, în afară de ecosistemul WordPress mai larg. În general, aceștia trebuie să facă față avertismentelor care devin probleme. Și sunt introduse mai multe erori, care pot fi greu de tratat. Puteți detecta un procent mai mare din aceste modificări în timpul de execuție.
Remedierea tuturor acestor probleme de compatibilitate este o sarcină uriașă. Pentru a realiza acest lucru, trebuie să utilizați o varietate de strategii, pornind de la analiza statică până la testarea automată. Este nevoie de timp uriaș + efort.
Ar trebui să aveți dreptul la instrument pentru a conduce totul perfect. Pentru proiecte precum WordPress, care trebuie să suporte o varietate de versiuni PHP, sunt introduse câteva complexități suplimentare în jonglarea cu diferite versiuni ale instrumentelor de analiză, așa cum am discutat mai sus.
Cu siguranță, devine destul de greu din cauza timpului de rulare și a diferențelor sintactice dintre PHP 5 și 8 fiind atât de incredibil de mari.
Folosirea PHP 8 pe WordPress este bună sau nu? De fapt, nu este argumentul aici. Singura concluzie aici este că devine foarte dificil să faci asta.
De asemenea, am luat în considerare problema acoperirii și a dependențelor PHP ale WordPress. Dacă doriți să detectați în mod fiabil compatibilitatea, atunci se dovedește a fi necesară o acoperire ridicată a testelor. Și vorbind despre PHP 8, este și mai important pentru că numărul problemelor de compatibilitate este mai mare decât de obicei. Un procent major dintre ele pot fi detectate doar în timpul rulării.
Deci, ce sfătuim?
Dacă sunt detectate probleme, este necesară o depanare extinsă pentru a găsi rădăcina problemei, indiferent că este WordPress, Temă, Plugin sau este asociat direct cu compatibilitatea PHP.
Acoperirea testului este practic absentă pentru dependențe și scăzută. Prin urmare, este greu să exclami ce este compatibilitatea de bază a WordPress cu PHP 8 într-un sens adevărat.
Deoarece PHP 8 se concentrează atât de profund pe tastarea strictă, sistemul de extensibilitate nesigur de tip WP devine foarte vulnerabil la probleme, ceea ce poate duce la generarea de erori de tip plugin-uri în alte plugin-uri sau WP în sine.
Am pus acest lucru la încercare, efectuând o analiză a datelor despre erori în ultima lună. Fiind un site imens, ne-am gândit că ar putea oferi o indicație puternică asupra tipului de probleme la care ne putem aștepta. Cu siguranță, am găsit câteva avertismente care vor evolua în erori cu PHP 8.
Am prefera să facem o notă finală aici. WordPress nu este singura bază de cod vechi disponibilă. De asemenea, nu este singurul proiect care vizează suportarea unei game uriașe de versiuni PHP. Informațiile din acest articol s-ar putea aplica bine și pentru alte proiecte.
Scopul principal al acestui articol de la Accuweb este de a informa și de a face o imagine de ansamblu asupra provocărilor și problemelor legate de compatibilitatea PHP 8 în WP. Sperăm că va servi perfect acestui scop.