WordPress e PHP 8 – Compatibilità e vantaggi!
Pubblicato: 2021-01-04La maggior parte dei fanatici della tecnologia è entusiasta di PHP 8.0 e, certamente, i cambiamenti questa volta sono enormi. tutti impiegheranno un po' di tempo per comprendere la compatibilità, le configurazioni, i vantaggi, ecc., di PHP 8 e, tra tutte, una delle domande più grandi che sorgono è: "WordPress è già compatibile con PHP 8 e, in caso contrario, allora quali azioni sono necessarie”.
Bene, non appena PHP 8 viene rilasciato, il nostro tempo di esperti si è tuffato nel livello più profondo di test e il risultato può scioccare chiunque! Sì, ora sappiamo tutto e ci fa piacere ostentare i nostri resoconti e i risultati delle degustazioni.
Non solo mostreremo cosa è cambiato tutto, ma ti daremo anche un puro consiglio sull'opportunità di aggiornare a PHP 8 o meno.
Tante modifiche sostanziali in PHP 8: ma perché?
PHP 8 è un enorme aggiornamento di PHP ed è pratica comune rimuovere i negativi nelle versioni principali dalla recente gamma di versioni secondarie. Per il tanto discusso PHP 8, diverse modifiche sostanziali sono state ridotte nelle precedenti versioni 7.*.
Quindi, per i progetti che sono stati attentamente aggiornati nel corso degli anni, correggendo le loro API derogate, l'aggiornamento non dovrebbe essere affatto difficile. A dire il vero, le versioni di PHP 7.* hanno osservato una serie di deprecazioni molto più ampia rispetto alle versioni precedenti di PHP.
Diciamo che da PHP 5.6 a PHP 7 è stata una migrazione piuttosto semplice, ma passare da 7.x a 8 potrebbe essere alquanto doloroso, specialmente per le vecchie basi di codice, incluso WordPress, oltre a diversi plugin disponibili.
Certamente, per basi di codice ben tipizzate o basi di codice aggiornate con le ultime versioni di PHP, non si verificheranno grossi problemi. Tuttavia, la realtà è che WordPress non è una tale base di codice.
WordPress è già compatibile con PHP 8?
A dire il vero, forse WordPress è già compatibile con PHP 8, ma sigillare quelle parole non è possibile, però. WordPress punta a essere sempre compatibile con le ultime versioni di PHP . Tuttavia, abbiamo analizzato a fondo le maggiori preoccupazioni più avanti in questa guida.
Abbiamo svolto un lavoro straordinario per quanto riguarda la ricerca delle soluzioni perfette per la maggior parte dei problemi di compatibilità che potrebbero essere riscontrati utilizzando le strategie disponibili. Certamente ci addentreremo più a fondo in quello che c'era e nei problemi che esistono con loro.
Quali cambiamenti di prestazioni sono in arrivo?
La principale caratteristica potenzialmente interessante in arrivo con PHP 8 è la compilazione e il debug JIT (Just In Time). Come sappiamo, PHP è un linguaggio interpretato, il che significa che viene tradotto in codice macchina quando viene eseguito.
JIT tiene traccia del codice utilizzato di frequente e lavora per ottimizzare la traduzione del codice automatico per renderlo riutilizzabile. Ora, questo può comportare un enorme miglioramento delle prestazioni per una determinata funzionalità.
L'inclusione di JIT in vari linguaggi, ad esempio JavaScript, ha storicamente condotto un'esplosione di nuove applicazioni. Ad esempio, le macchine virtuali in esecuzione in JS sarebbero state fuori dall'immaginazione nei primi giorni del web. Alcune attività che in passato avrebbero richiesto l'installazione di moduli sul server saranno pratiche utilizzando le librerie PHP di base.
Per il momento, l'aumento effettivo delle prestazioni per app Web come WordPress è minimo. Oltre a ciò, ci vorrà molto tempo prima che uno sviluppatore o un utente medio di WordPress raccolga i vantaggi di questa nuova funzionalità.
Ci sono molte altre nuove funzionalità per semplificare la vita degli sviluppatori; è improbabile che questi vengano utilizzati in temi e plug-in WP nel prossimo futuro perché la maggior parte interromperebbe la compatibilità con le versioni precedenti di PHP ancora in uso da diversi siti WordPress.
Come aggiornare PHP per il tuo sito WordPress?
In questa guida, descriveremo quanto convenientemente puoi aggiornare PHP all'ultima versione, soprattutto, senza danneggiare il tuo sito WordPress.
Se sei ansioso di conoscere il percorso, controlla la tua versione corrente di PHP, quindi aggiorna WordPress alla versione più recente. Successivamente, installa lo "scanner PHP one.com" ed esegui una scansione per risolvere potenziali problemi. Inoltre, aggiorna PHP all'ultima versione e verifica se il tuo sito funziona come previsto o meno.
Mostriamo l'intero processo.
Passaggio 1: controlla la tua versione corrente di PHP
All'inizio, devi controllare con quale versione di PHP stai attualmente girando. Puoi ottenere le informazioni sull'attuale versione PHP del tuo sito web dalla pagina phpinfo.
Se stai utilizzando cPanel, puoi visualizzare la versione PHP dall'articolo come visualizzare e modificare la versione PHP in cPanel.
Nel caso in cui utilizzi la versione PHP 7.3 o successiva, va tutto bene. Per coloro che hanno PHP 7.2, è necessario un aggiornamento. Per favore, apprezza il passaggio 2.
Passaggio 2: aggiorna WordPress all'ultima versione
Assicurati che il core di WordPress e tutti i plugin e i temi siano aggiornati all'ultima versione se vuoi davvero evitare qualsiasi malfunzionamento.
- Accedi al tuo amministratore di WordPress e fai clic su Dashboard > Aggiornamenti .
- Controlla se hai installato l'ultima versione di WordPress e che tutti i temi e i plugin siano aggiornati. Aggiorna subito il tuo WordPress all'ultima versione.
Passaggio 3: installa lo "scanner PHP one.com".
- Nell'amministratore di WordPress , tocca one.com > Plugin .
- Individua lo scanner PHP di one.com e tocca Installa ora .
- Ora, fai clic su Attiva e vai al passaggio successivo.
Passaggio 4: esegui una scansione e risolvi potenziali problemi
- Nel menu a sinistra, tocca Scanner PHP .
- Tocca PHP versione 7.4 , quindi " Tutti i temi e i plug-in ", quindi tocca Avvia scansione .
- Puoi procedere una volta terminata la scansione.
- Puoi avere tre risultati:
– Compatibile = significa che va tutto bene!
– Avvertimento = Significa che dovrebbe funzionare ma potrebbe dare problemi con la prossima versione di PHP.
– Errore = non è così buono, causerà sicuramente problemi dopo l'aggiornamento.
Correggi eventuali temi o plug-in che leggono errori, aggiornandolo all'ultima versione o sostituendolo con un plug-in alternativo che fornisce la stessa funzionalità.
Suggerimento: ti consigliamo di utilizzare solo quei plug-in che vengono aggiornati regolarmente e non presentano problemi di compatibilità con l'ultima versione di WordPress. Oltre a ciò, è buona norma rimuovere eventuali plug-in indesiderati per migliorare le prestazioni del sito.
Passaggio 5: aggiorna PHP alla versione 8.0
Ora sei pronto per aggiornare PHP. Ti consigliamo di attivare i messaggi di errore PHP contemporaneamente. In caso di problemi con il codice, vedrai messaggi di errore che ti dicono cosa lo sta causando e anche dove si trova esattamente.
- Nel pannello di controllo, torna a PHP e alle impostazioni del database .
- Scorri verso il basso fino ai messaggi di errore PHP .
- Fare clic su Aggiorna dopo aver impostato i messaggi di errore su Attivo .
- Direttamente sotto questo, cambia la versione e tocca Aggiorna .
Passaggio 6: verifica se il tuo sito Web funziona come previsto.
Ora hai aggiornato la versione di PHP e ci vorranno almeno 20 minuti prima che le modifiche vengano applicate. Se il tuo sito riceve molti visitatori, il lasso di tempo può estendersi anche a diverse ore. Questo è il motivo per cui ti consigliamo di controllare il tuo sito web almeno un paio di volte durante le prossime 24 ore.
Nel caso in cui il tuo sito non funzioni rispetto a ciò che ti aspettavi, il problema più probabile è il tuo tema o qualsiasi plug-in. Per scoprire cosa sta causando esattamente i problemi:
- Passa temporaneamente al tema WordPress predefinito, diciamo "Twenty Seventeen".
- Seleziona tutti i plugin installati e disattivali del tutto.
- Abilita nuovamente i temi e tutti i plugin, uno per uno, e continua a controllare ogni volta se il tuo sito funziona ancora o meno. Puoi catturare il colpevole in questo modo.
Se parliamo tecnicamente, la compatibilità dell'attuale notte di WordPress con il tanto discusso PHP 8 è a un livello simile a quello in cui abitiamo dalle versioni di WordPress subito prima che appaia una nuova versione di PHP.
I nostri test sono stati sostanziali, la correzione è stata meticolosa e il livello di risoluzione dei problemi è stato enorme quanto qualsiasi correzione della compatibilità PHP all'interno del core di WordPress. Tuttavia, se non segui questa guida, non sarai in grado di comprendere le sfide di compatibilità e trarre il massimo vantaggio da PHP 8.
L'enorme quantità di modifiche sostanziali e il tipo di modifiche incluse in PHP 8, oltre ad alcune complessità aggiuntive negli strumenti per versioni incrociate, rendono sicuramente questa sfida di compatibilità una bestia più grande di quanto abbiamo sperimentato prima con le versioni precedenti di PHP. Questo rapporto mira a spiegare lo stesso caso.
Problemi di compatibilità con WordPress e PHP8
Ti mostreremo alcune strategie che puoi implementare per rendere compatibile una base di codice esistente con PHP 8.
- Strumenti di analisi statica come PHPCompatibility per rilevare problemi sintattici.
- Test automatici per rilevare problemi di runtime.
- Test manuali per rilevare problemi di runtime.
A seconda della copertura della tua suite di test e della proporzione di modifiche sintattiche e runtime, queste strategie servono bene per correggere la compatibilità della base di codice con una nuova versione di PHP (attualmente in discussione PHP 8).
In verità, nel caso di PHP 8 e WordPress, ci sono alcune sfide aggiuntive che rendono difficile fare affidamento su queste strategie in conformità per garantire la perfetta compatibilità di WordPress con PHP 8. Di seguito riporteremo le strategie che abbiamo implementato per WordPress e condividi i risultati.
Strumenti di analisi statica
A causa della natura di alcune modifiche in PHP 8.0, i problemi che possono essere rilevati utilizzando l'analisi statica sono limitati. In quelle circostanze, in cui l'analisi statica cerca di andare oltre le loro potenzialità tradizionali e prevede di tracciare il valore delle variabili, delle costanti e del tipo di runtime, i risultati di tali scansioni saranno sicuramente inclini a falsi positivi.
Oltre a ciò, la compatibilità PHP è l'unico strumento di analisi statica pensato per trovare problemi relativi alla compatibilità tra versioni di PHP.
Oltre alla compatibilità con PHP, altri strumenti di analisi statica segnalano una portata più ampia di problemi. Accarezzare i risultati per rilevare i problemi, che sono correlati alla compatibilità tra versioni PHP e effettivamente corretti, richiede molto tempo e richiede una conoscenza approfondita degli strumenti, in particolare sulla loro configurazione per la minor quantità di rumore.
Contemporaneamente, questi strumenti sono in costante instabilità, cercando di andare avanti con le modifiche nella versione PHP e aggiornando le possibili scansioni. Quindi, possiamo aspettarci che questi strumenti rilevino ancora più problemi nel prossimo futuro.
Quindi, indipendentemente da ciò che è già stato e può essere ulteriormente trovato in questo momento, è probabile che questi strumenti trovino ancora più problemi nel (prossimo) futuro.
Scansione di WordPress con compatibilità PHP
"__destruct() non verrà più chiamato dopo die() in __construct()" è un altro problema di PHP 8 trovato da PHPCompatibility. Questo è perfettamente rilevato dallo scanner. Tuttavia, dopo un'ulteriore analisi, è stato capito che non è problematico in questo caso.
Oltre a ciò, PHPCompatibility ha rilevato un problema nel codice utilizzato da "Plugin/Editor di temi". Le analisi del codice coinvolto hanno determinato l'esistenza di una svista sottostante nel codice. Nell'editor, WordPress non vede l'ora di fare un'analisi minima del codice; tuttavia, non tiene conto del codice PHP 5.3+.
Pur tenendo conto delle modifiche rilevanti in PHP8, questa svista è ora resa più complessa da risolvere. Abbiamo eseguito scansioni con PHPCompatibility con la versione sviluppata e i risultati, come ci aspettavamo, sono stati molto diversi da quelli ottenuti con i precedenti aggiornamenti di PHP. I problemi rilevati dallo scanner vengono gestiti esternamente.
Scansione di WordPress con Exakat
Parlando dell'ultima scansione pubblica avvenuta il 16 ottobre, basata su WP trunk, Exakat riporta 149.567 problemi in totale.
Il rapporto sulla compatibilità di PHP 8 ci mostra un totale di 93 problemi. Tuttavia, è incompleto poiché un numero di analisi rilevante per PHP 8 non è incluso nel rapporto.
Sebbene ci aspettiamo che questi rapporti contengano un gran numero di falsi positivi perché WordPress non utilizza dichiarazioni di tipo, e quindi i tipi vengono estrapolati dal codice trovato e dai tipi mostrati in docblock, questi problemi dovrebbero comunque essere esaminati individualmente.
Indipendentemente dal fatto che solo l'1% dei problemi rilevati sia corretto, ma scenderebbe comunque a ~450 errori, che devono ancora essere affrontati. Oltre a ciò, la grande quantità di tempo necessaria per eliminare i problemi autentici dai falsi positivi.

Scansione di WordPress con PHPStan
Le scansioni con PHPStan richiedono un set di regole completamente personalizzato per ottenere risultati utilizzabili da remoto e, tuttavia, si rivelano piene di alcuni falsi positivi, rendendo l'output inutilizzabile.
Nota: non stiamo criticando lo strumento PHPStan, ma è dovuto al fatto che WordPress utilizza a malapena le dichiarazioni di tipo, mentre d'altra parte, PHPStan è principalmente incline a progetti che utilizzano codice moderno, vero?
Una scansione iniziale comprendente la configurazione più semplice produrrà oltre 20.000 problemi. Una scansione con il set di regole sopra menzionato altamente personalizzato, mirato specificamente ai problemi relativi a PHP 8, produce ancora esattamente 580 problemi al livello 5 e ulteriori 2.150 potenziali problemi al livello 7. Questi probabilmente conterranno alcuni falsi positivi e tuttavia produrranno 380 problemi in più al livello 8 con un avvertimento simile.
Di recente è stato aperto un ticket Trac per risolvere un elenco di problemi sulla base di una configurazione sconosciuta, ma completamente mirato a superare le discrepanze del tipo di parametro (livello 5). La bozza di PR è disponibile per risolvere questi problemi.
Una valutazione intuitiva di questo PR indica che la maggior parte delle correzioni proposte converte in typecast le variabili nel tipo previsto e nasconde i problemi, non in realtà li risolve controllando correttamente. Ciò porta a comportamenti imprevisti nell'applicazione nel caso in cui queste modifiche non siano accompagnate da rigidi unit test. Oltre a ciò, tit probabilmente si traduce in una maggiore difficoltà durante il debug degli errori più in basso di sicuro.
Al momento, non è confermato se le correzioni proposte siano giustificate o se i problemi identificati debbano essere considerati falsi positivi.
Test
L'analisi statica può andare così lontano a causa della natura degli scambi problematici in PHP8. La revisione e il test manuali del software si rivela un lavoro così scrupoloso e anche gli esseri umani sono piuttosto inclini a trascurare le cose quando c'è molto da cercare.
Ora, parlando di test eseguiti dagli utenti finali, si rivelano relativamente inutili, poiché ciò comporterà normalmente il test di "percorsi felici". Se vogliamo ottenere risultati più affidabili, abbiamo bisogno di test esplorativi e di regressione completi.
Avere test automatizzati di alta qualità ed eseguirli su PHP 8 è più importante di ogni altra cosa. Ciò offrirà l'indicazione perfetta del problema di PHP 8.0 da aspettarsi.
La maggior parte dei fanatici della tecnologia è entusiasta di PHP 8.0 e, certamente, i cambiamenti questa volta sono enormi. tutti impiegheranno un po' di tempo per comprendere la compatibilità, le configurazioni, i vantaggi, ecc. di PHP 8 e, tra tutti, una delle domande più grandi che sorgono è: "WordPress è già compatibile con PHP 8 e, in caso contrario, quali azioni sono necessari."
Bene, non appena PHP 8 è stato rilasciato, il nostro tempo di esperti si è tuffato nel livello più profondo di test e il risultato può scioccare chiunque! sì, ora sappiamo tutto e siamo lieti di ostentare i nostri rapporti e i risultati dei test.
Passiamo ora a Esecuzione di test automatici su PHP 8.
Esecuzione di test automatici su PHP 8
PHPUnit 9.3 è la prima versione di PHPUnit ufficialmente compatibile con PHP 8.0 ed è stata rilasciata nell'agosto 2020. Ebbene, eseguire una suite di test automatizzata in esecuzione su PHP è difficile perché lo strumento de facto per i test unitari.
Ottenere una suite di test automatizzata da eseguire su PHP 8 ci porta nella prossima tana del coniglio come strumento de facto per eseguire lo unit test nel mondo PHP; PHPUnit normalmente esegue un enorme rilascio ogni anno, con ogni singolo rilascio principale supporto per le precedenti versioni di PHP. Introduce modifiche sostanziali, ma poiché PHPUnit 9.3 è ufficialmente compatibile con PHP 8.0, come accennato in precedenza, non c'è bisogno di preoccuparsi!
Sappiamo che, come minimo, WordPress supporta ancora PHP 5.6. Per eseguire test su PHP 8.0, qualsiasi suite di test relativa a WordPress deve essere completamente compatibile con PHPUnit 5 fino a PHPUnit 9. Certamente, gli strumenti sono costruiti per aiutarti in questo; consuma ancora fatica e tempo per implementare questi strumenti per rendere compatibile una suite di test.
Far eseguire i test su PHP8 per WordPress Core
I test per WP Core stanno attualmente superando e girando contro PHP 8. Questi test sono stati condotti sulla versione installata del compositore di PHPUnit 7.5. Anche se PHPUnit 9.3 è la versione più vecchia di PHPUnit ufficialmente compatibile con PHP 8.
Quest'ultimo problema è stato affrontato copiando un numero selezionato di file/classi da PHPUnit 9.3 alla suite di test di WordPress, escludendo le classi native di PHPUnit dalla generazione del caricamento automatico di Composer, supportando l'utilizzo di copie da PHPUnit 9.3 nella suite di test di WordPress. Funziona, per ora, tuttavia, la chiameremmo una soluzione hacky e potrebbe non essere sostenibile in futuro, oltre alla manutenzione di cui potrebbe aver bisogno attualmente.
Per motivi di qualità dei test, questo era certamente basso all'inizio, con il controllo del tipo sciolto utilizzato nella maggior parte dei casi.
Andando più in profondità, un ticket Trac per affrontare questo problema è stato aperto nel 2016. Considerando l'aderenza al tipo più rigorosa in PHP, questo ticket è stato ripristinato. Molto lavoro è stato intrapreso per mitigare questo.
Mentre abbiamo scritto, ci sono circa 800 istanze (676 assertEquals() aggiunti a 96 assertNotEquals()). Continuo a utilizzare il controllo del tipo libero, in calo rispetto a oltre 8000 istanze.
In parte, le asserzioni di tipo sciolto che rimanevano sono legittime quando si confrontano gli oggetti; in parte, questi devono certamente essere affrontati. Tuttavia, attualmente porterebbe a errori di test. Questi ultimi evidenziano carenze sia nei test, ma più saltuariamente, nel codice in prova.
Test di temi e plugin
C'è solo una piccola percentuale dei plugin disponibili, quelli sviluppati professionalmente e più popolari e hanno test automatizzati in atto. In generale, questo è preoccupante poiché un normale sito WordPress esegue sicuramente quasi 19 o 20 plugin. Molti siti continuano con ancora più plugin! Avere test automatici in atto per i temi è ancora più raro.
È difficile consentire a queste suite di test di funzionare su PHP versione 8. E anche prima che si possano ottenere informazioni sulla compatibilità di plugin e temi con PHP 8.
Tuttavia, i plugin/temi che hanno sono per lo più quelli in cui ci si può aspettare la quantità minima di problemi con PHP 8.0. Lo esclamiamo perché tali temi/plugin utilizzano un modello di sviluppo professionale.
La principale causa di preoccupazione è la moltitudine di test e temi senza test, poiché questi sono più inclini a essere problematici durante l'esecuzione con PHP 8.
Per i temi e i plug-in, che dispongono di test, esistono principalmente due tipi di test che possono avere o meno in atto:
- Test unitari . Test stand-alone che "deridono" WP per consentire il test del codice del plugin. Vengono utilizzati framework popolari come BrainMonkey e Mockery .
- Prove di integrazione . Ora, i test di integrazione sono dove WordPress stesso viene caricato prima di eseguire la suite di test e utilizzerà il codice WPcore e si integrerà con la suite di test WP.
Prove di integrazione
Sappiamo che WordPress ha deciso di attenersi a PHPUnit 7.5. Che cosa significa?
Bene, per i test di integrazione per temi e plugin, anche quelli verranno trasferiti a PHPUnit 7.5 (massimo).
Temi e plugin dovranno copiare l'hack in WP Core per far funzionare perfettamente i loro test di integrazione o, in alternativa, dovranno usare i file in WP Core. Tuttavia, dovranno quindi creare un caricatore automatico personalizzato perché non è possibile utilizzare lo stesso hack di generazione del caricamento automatico di Composer.
Se è necessario impedire comunque il caricamento dei file nativi di PHPUnit, un tale caricatore automatico personalizzato dovrà essere sicuramente avviato subito prima del file di caricamento automatico di Composer.
Test unitari
Per gli unit test con l'aiuto di Mockery o BrainMonkey, è richiesto PHPUnit > 8 poiché il framework Mockery disponibile per PHPUnit 7.x non è compatibile con PHP 8.0. Quindi, la comparabilità di queste suite di test è obbligatoria con PHPUnit 5 fino a 9, il che aggiunge sicuramente un'altra sfida.
Come?
Sono necessarie diverse versioni di PHPUnit per eseguire ciascuna suite di test quando vengono utilizzati entrambi i tipi di suite di test. Per aggravare questa circostanza, i plugin avranno normalmente un file composer.lock impegnato per garantire che le loro dipendenze di runtime siano in una determinata versione su cui possono fare affidamento e che sia completamente compatibile con PHP 5.6.
In certi momenti, quest'ultima parte viene rafforzata avendo una sorta di configurazione php 5.6 della piattaforma nel file composer.json. Ciò significa anche che le loro dipendenze di sviluppo BrainMonkey, Mockery, PHPUnit verranno bloccate anche su una versione compatibile con PHP 5.6. ora, ciò impedirebbe sicuramente l'esecuzione di test su PHP 8.0.
Puoi superarlo rimuovendo al volo la piattaforma oltre ad aggiornare i file composer.lock e composer.json. Tuttavia, questo rende più impegnativo l'esecuzione dei test su PHP 8.0, sia in CI che localmente, per i suoi sviluppatori.
La compatibilità con PHP 8 sembra alquanto complicata sui grandi siti WordPress
Solo esaminando una catena di modifiche sostanziali in PHP 8, potremmo confermare che ciò tende a causare enormi rotture sui siti con il motivo poco chiaro di tale interruzione. In determinati momenti, l'errore si verificherà in un posto ma è generato da un tema o plug-in in un posto diverso, e ciò renderebbe sicuramente il debug di questi problemi piuttosto difficile.
accuwebhosting.com è sicuramente un sito WordPress gestito attivamente e un team dedicato di sviluppatori professionisti lo supporta. La stragrande maggioranza dei siti WordPress non ha questo lusso e mitigare i problemi di compatibilità su questi siti sarà sicuramente difficile.
Quanto tempo hanno gli sviluppatori per aggiornare?
Il ciclo di vita di ogni versione di PHP è di 2 anni e i bug sono stati corretti in questa era. Viene aggiunto un altro anno durante il quale vengono corretti i problemi di sicurezza. PHP 7.4 è arrivato a novembre 2019. Era la versione finale di PHP 7. Significa che i bug in PHP 7.4 saranno risolti fino a novembre 2021. I problemi di sicurezza saranno corretti fino a novembre 2022. Raggiungerà la sua "fine vita" in quel momento.
Quindi, la data di interruzione definitiva è novembre 2022: tutto il codice PHP deve essere compatibile con PHP 8 a questo punto, altrimenti rischi di rimanere bloccato su una versione PHP potenzialmente vulnerabile.
Conclusione
PHP 8 conterrà numerose modifiche di rilievo. Abbiamo descritto una buona gamma di questi cambiamenti nel nostro rapporto, quelli che i nostri esperti ritengono avranno l'impatto più feroce su WordPress oltre al più ampio ecosistema di WordPress. Quelli generalmente hanno a che fare con gli avvisi che diventano problemi. E vengono introdotti diversi errori, che possono essere difficili da affrontare. È possibile rilevare una percentuale maggiore di queste modifiche in fase di esecuzione.
Risolvere tutti questi problemi di compatibilità è un compito enorme. A tal fine, è necessario utilizzare una varietà di strategie, a partire dall'analisi statica fino ai test automatizzati. Richiede un enorme sforzo di tempo +.
Dovresti avere il diritto di uno strumento per condurre tutto perfettamente. Per progetti come WordPress, che devono supportare una varietà di versioni di PHP, vengono introdotte diverse complessità extra nel destreggiarsi tra le varie versioni degli strumenti di analisi, come discusso in precedenza.
Certamente, diventa piuttosto difficile a causa delle differenze di runtime e sintattiche tra PHP 5 e 8 che sono così incredibilmente enormi.
Usare PHP 8 su WordPress è buono o no? In realtà non è l'argomento qui. L'unica conclusione qui è: diventa molto difficile farlo.
Inoltre, abbiamo considerato il problema della copertura e delle dipendenze PHP di WordPress. Se si desidera rilevare in modo affidabile la compatibilità, è necessaria un'elevata copertura dei test. E parlando di PHP 8, è ancora più importante perché il numero di problemi di compatibilità è più alto del solito. Una percentuale importante di essi può essere rilevata solo in fase di esecuzione.
Allora, cosa consigliamo?
Se vengono rilevati problemi, è necessario eseguire un debug approfondito per trovare la radice del problema, indipendentemente dal fatto che si tratti di WordPress, temi, plug-in o associati direttamente alla compatibilità con PHP.
La copertura del test è praticamente assente per le dipendenze e bassa. Quindi, è difficile esclamare quale sia la compatibilità di base di WordPress con PHP 8 nel vero senso della parola.
A causa del fatto che PHP 8 si concentra così profondamente sulla tipizzazione rigorosa, il sistema di estensibilità dei tipi non sicuro di WP diventa estremamente vulnerabile ai problemi, portando potenzialmente a plug-in che generano errori di tipo in altri plug-in o WP stesso.
Lo mettiamo alla prova eseguendo un'analisi sui dati di errore l'ultimo mese. Essendo un sito enorme, abbiamo pensato che potesse dare una forte indicazione del tipo di problemi che possiamo aspettarci. Certamente, abbiamo trovato diversi avvisi che si evolveranno in errori con PHP 8.
Preferiamo fare un'ultima nota qui. WordPress non è l'unica base di codice legacy disponibile. Inoltre non è l'unico progetto che mira a supportare una vasta gamma di versioni di PHP. Le informazioni in questo articolo potrebbero essere valide anche per altri progetti.
L'obiettivo principale di questo articolo di Accuweb è informare e fare una panoramica delle sfide e dei problemi relativi alla compatibilità con PHP 8 in WP. Ci auguriamo vivamente che serva perfettamente a questo scopo.