WordPress & PHP 8 – Compatibilité & avantages !

Publié: 2021-01-04

La plupart des tech-geeks sont enthousiasmés par PHP 8.0, et certainement, les changements sont énormes cette fois. tout le monde va prendre du temps pour comprendre la compatibilité, les configurations, les avantages, etc., de PHP 8, et parmi tous, l'une des plus grandes questions qui surgissent est - "est-ce que WordPress est déjà compatible avec PHP 8, et sinon, alors quelles actions sont nécessaires.

WordPress & PHP 8 - Compatibilité & avantages !

Eh bien, dès que PHP 8 est sorti, notre temps d'expert a plongé dans le niveau de test le plus profond, et le résultat peut choquer n'importe qui ! Oui, nous savons tout maintenant et éprouvons du plaisir à exhiber nos rapports et résultats de dégustations.

Non seulement nous montrerons ce qui a changé, mais nous vous donnerons également un pur conseil pour savoir si vous devez mettre à jour vers PHP 8 ou non.

Tant de changements de rupture dans PHP 8 : Mais pourquoi ?

PHP 8 est une énorme mise à jour de PHP, et il est courant de supprimer les points négatifs dans les versions majeures de la gamme récente de versions mineures. Pour le très populaire PHP 8, plusieurs changements de rupture ont été réduits dans les versions 7.* précédentes.

Par conséquent, pour les projets qui ont été mis à jour avec attention au fil des ans, en corrigeant leurs API dérogatoires, il ne devrait pas être difficile de mettre à niveau du tout. À vrai dire, les versions de PHP 7.* ont observé un ensemble bien plus important de dépréciations par rapport aux versions précédentes de PHP.

Nous dirions que PHP 5.6 vers PHP 7 était une migration assez simple, mais passer de 7.x à 8 pourrait être quelque peu pénible, en particulier pour les anciennes bases de code, y compris WordPress, en plus de plusieurs plugins disponibles.

Certes, pour les bases de code bien typées ou les bases de code à jour avec les dernières versions de PHP, de gros problèmes ne se produiront pas. Cependant, la réalité est que WordPress n'est pas une telle base de code.

WordPress est-il déjà compatible avec PHP 8 ?

Honnêtement, peut-être que WordPress est déjà compatible avec PHP 8, mais sceller ces mots n'est cependant pas possible. WordPress vise à être toujours compatible avec les dernières versions de PHP . Cependant, nous avons analysé en profondeur les principales préoccupations plus loin dans ce guide.

Compatibilité-Wordpress-et-PHP2

Nous avons fait un travail incroyable pour trouver les correctifs parfaits pour la majorité des problèmes de compatibilité qui pourraient être trouvés en utilisant les stratégies disponibles. Nous allons certainement plonger plus profondément dans ce que tout était là et les problèmes qui existent avec eux.

Quels sont les changements de performances à venir ?

La principale fonctionnalité potentiellement intéressante qui arrive avec PHP 8 est la compilation et le débogage JIT (Just In Time). Comme nous le savons, PHP est un langage interprété, ce qui signifie qu'il est traduit en code machine lorsqu'il s'exécute.

JIT suit le code fréquemment utilisé et travaille à l'optimisation de la traduction du code machine pour le rendre réutilisable. Maintenant, cela peut entraîner une énorme amélioration des performances pour une fonctionnalité donnée.

L'inclusion de JIT dans divers langages, par exemple JavaScript, a historiquement conduit à une explosion de nouvelles applications. Par exemple, les machines virtuelles fonctionnant en JS auraient été hors d'imagination aux débuts du Web. Quelques tâches qui auraient nécessité l'installation de modules sur le serveur dans le passé vont être pratiques en utilisant les bibliothèques PHP de base.

Pour le moment, l'élévation réelle des performances des applications Web comme WordPress est minime. En plus de cela, il faudra beaucoup de temps avant qu'un développeur ou un utilisateur moyen de WordPress ne profite des avantages de cette nouvelle fonctionnalité.

Il existe plusieurs autres nouvelles fonctionnalités pour faciliter la vie des développeurs ; il est peu probable que ceux-ci soient utilisés dans les thèmes et plugins WP dans un avenir prévisible, car la majorité romprait la compatibilité avec les versions antérieures de PHP encore utilisées par plusieurs sites WordPress.

Comment mettre à jour PHP pour votre site WordPress ?

Dans ce guide, nous décrirons avec quelle facilité vous pouvez mettre à jour PHP vers la dernière version, surtout, sans casser votre site WordPress.

Si vous souhaitez connaître le chemin, vérifiez simplement votre version actuelle de PHP, puis mettez à jour WordPress vers la version la plus récente. Après cela, installez le "scanner PHP one.com" et exécutez une analyse pour résoudre les problèmes potentiels. De plus, mettez à jour PHP vers la dernière version et vérifiez si votre site fonctionne comme prévu ou non.

Montrons tout le processus.

Étape 1 : Vérifiez votre version actuelle de PHP

Au tout début, vous devez vérifier avec quelle version de PHP vous utilisez actuellement. Vous pouvez obtenir des informations sur la version actuelle de PHP de votre site Web à partir de la page phpinfo.

Si vous utilisez le cPanel, vous pouvez afficher la version de PHP à partir de l'article comment afficher et modifier la version de PHP dans cPanel.

Si vous utilisez PHP version 7.3 ou supérieure, tout va bien. Pour ceux qui ont PHP 7.2, une mise à jour est nécessaire. Veuillez passer à l'étape 2.

Étape 2 : Mettez à jour WordPress vers la dernière version

Assurez-vous que le noyau WordPress et tous les plugins et thèmes sont mis à jour vers la dernière version si vous voulez vraiment éviter tout dysfonctionnement.

  1. Connectez-vous à votre administrateur WordPress et cliquez sur Tableau de bord > Mises à jour .
  2. Vérifiez si vous avez installé la dernière version de WordPress et que tous les thèmes et plugins sont à jour. Mettez à jour votre WordPress vers la dernière version maintenant.

Étape 3 : Installez le « scanner PHP one.com ».

  1. Dans votre administrateur WordPress , appuyez sur one.com > Plugins .
  2. Localisez le scanner PHP one.com et appuyez sur Installer maintenant .
  3. Maintenant, cliquez sur Activer et passez à l'étape suivante.

Étape 4 : Exécutez une analyse et corrigez les problèmes potentiels

  1. Dans le menu de gauche, appuyez sur Scanner PHP .
  2. Appuyez sur PHP version 7.4 , puis sur « Tous les thèmes et plugins », puis appuyez sur Démarrer l'analyse .
  3. Vous pouvez continuer une fois l'analyse terminée.
  4. Vous pouvez avoir trois résultats :

Compatible = Cela signifie que tout va bien !

Avertissement = Cela signifie que cela devrait fonctionner mais pourrait poser des problèmes avec la prochaine version de PHP.

Erreur = Ce n'est pas si bon, cela causera certainement des problèmes après la mise à jour.

Corrigez tous les thèmes ou plugins qui lisent des erreurs, soit en le mettant à jour vers la dernière version, soit en le remplaçant par un plugin alternatif offrant la même fonctionnalité.

Astuce : Nous vous recommandons d'utiliser uniquement ces plugins qui sont mis à jour régulièrement et qui n'apportent aucun problème de compatibilité avec la dernière version de WordPress. En plus de cela, il est recommandé de supprimer tous les plugins indésirables pour améliorer les performances du site.

Étape 5 : Mettez à jour PHP vers la version 8.0

Vous êtes maintenant prêt à mettre à jour PHP. Nous vous recommandons d'activer simultanément les messages d'erreur PHP. En cas de problème avec le code, vous verrez des messages d'erreur vous indiquant ce qui en est la cause et également où il se trouve exactement.

  1. Dans le panneau de configuration, revenez aux paramètres de PHP et de la base de données .
  2. Faites défiler jusqu'aux messages d'erreur PHP .
  3. Cliquez sur Mettre à jour après avoir défini les messages d'erreur sur Activé .
  4. Juste en dessous, changez la version et appuyez sur Mettre à jour .

Étape 6 : Vérifiez si votre site Web fonctionne comme prévu.

Maintenant, vous avez mis à jour la version de PHP et cela prendra au moins 20 minutes avant que les modifications ne s'appliquent. Si votre site reçoit beaucoup de visiteurs, le délai peut s'étendre jusqu'à plusieurs heures. C'est la raison pour laquelle nous vous recommandons de vérifier votre site Web au moins deux fois au cours des prochaines 24 heures.

Si votre site ne fonctionne pas par rapport à ce que vous attendiez, le problème le plus probable est votre thème ou tout plugin. Pour savoir exactement ce qui cause des problèmes :

  1. Passez temporairement au thème WordPress par défaut, nous dirions « Twenty Seventeen ».
  2. Sélectionnez tous les plugins installés et désactivez-les complètement.
  3. Activez à nouveau les thèmes et tous les plugins, un par un, et continuez à vérifier à chaque fois si votre site fonctionne toujours ou non. Vous pouvez attraper le coupable de cette façon.

Si nous parlons techniquement, alors la compatibilité de la version actuelle de WordPress avec le très discuté PHP 8 est à un niveau similaire à celui que nous connaissons depuis les versions de WordPress juste avant qu'une nouvelle version de PHP n'apparaisse.

Nos tests ont été aussi substantiels, la correction a été aussi méticuleuse et le niveau de résolution des problèmes était aussi énorme que n'importe quelle correction de compatibilité PHP dans le noyau de WordPress. Cependant, si vous ne suivez pas ce guide, vous ne pourrez pas comprendre les problèmes de compatibilité et tirer le maximum d'avantages de PHP 8.

L'énorme quantité de changements de rupture et les types de changements inclus dans PHP 8, en plus de quelques complexités supplémentaires dans les outils inter-versions, font certainement de ce défi de compatibilité une bête plus grande que ce que nous avons connu auparavant avec les versions précédentes de PHP. Ce rapport vise à expliquer le même cas.

Défis de compatibilité WordPress et PHP8

Nous vous montrerons quelques stratégies que vous pouvez déployer pour rendre une base de code existante compatible avec PHP 8.

  • Des outils d'analyse statique tels que PHPCompatibility pour détecter les problèmes syntaxiques.
  • Tests automatisés pour détecter les problèmes d'exécution.
  • Tests manuels pour détecter les problèmes d'exécution.

Selon la couverture de votre suite de tests et la proportion de changements syntaxiques et d'exécution, ces stratégies servent bien à fixer la compatibilité de la base de code avec une nouvelle version de PHP (en cours de discussion sur PHP 8).

Vraiment, dans le cas de PHP 8 et de WordPress, il y a quelques défis supplémentaires qui rendent difficile de s'appuyer sur ces stratégies pour assurer une parfaite compatibilité de WordPress avec PHP 8. Ci-dessous, nous rendrons compte des stratégies que nous avons déployées pour WordPress et partagez les résultats.

Outils d'analyse statique

En raison de la nature de quelques modifications apportées à PHP 8.0, les problèmes pouvant être détectés à l'aide de l'analyse statique sont limités. Dans ces circonstances, où l'analyse statique cherche à aller au-delà de ses potentiels traditionnels et prévoit de retracer la valeur des variables et des constantes et le type d'exécution, les résultats de ces analyses seront certainement sujets aux faux positifs.

Outils d'analyse statique

En plus de cela, PHP Compatibility est le seul et unique outil d'analyse statique destiné à trouver les problèmes liés à la compatibilité entre versions de PHP.

Outre la compatibilité PHP, d'autres outils d'analyse statique signalent un plus grand nombre de problèmes. Chercher les résultats pour détecter les problèmes, qui sont liés à la compatibilité entre versions de PHP et qui sont réellement corrects, prend beaucoup de temps et nécessite des connaissances approfondies en matière d'outillage, en particulier pour les configurer avec le moins de bruit possible.

Simultanément, ces outils sont en constante instabilité, essayant de suivre les changements de la version PHP et de mettre à jour les analyses possibles. Par conséquent, nous pouvons nous attendre à ce que ces outils détectent encore plus de problèmes dans un avenir proche.

Ainsi, indépendamment de ce qui a déjà été et peut être trouvé à l'heure actuelle, il est probable que ces outils rencontreront encore plus de problèmes dans un avenir (proche).

Scanner WordPress avec PHPCompatibility

"__destruct() ne sera plus appelé après die() dans __construct()" est un autre problème PHP 8 trouvé par PHPCompatibility. Ceci est parfaitement détecté par le scanner. Cependant, après une analyse plus approfondie, il a été déterminé qu'il ne s'agissait pas d'un problème dans ce cas.

En plus de cela, PHPCompatibility a détecté un problème dans le code utilisé par "Plugin/Theme editor". Les analyses du code impliqué ont déterminé l'existence d'un oubli sous-jacent dans le code. Dans l'éditeur, WordPress attend avec impatience de faire une analyse minimale du code ; cependant, il ne prend pas en compte le code PHP 5.3+.

Tout en tenant compte des modifications pertinentes de PHP8, cet oubli est désormais rendu plus complexe à résoudre. Nous avons effectué des scans avec PHPCompatibility avec la version développée, et les résultats, comme nous nous y attendions, étaient très différents de ce que nous avions obtenu avec les précédentes mises à jour de PHP. Les problèmes détectés par l'analyseur sont gérés en externe.

Scanner WordPress avec Exakat

Parlant de la dernière analyse publique qui a eu lieu le 16 octobre, basée sur le tronc WP, Exakat signale 149.567 problèmes au total.

Le rapport de compatibilité PHP 8 nous montre un total de 93 problèmes. Cependant, il est incomplet car un numéro d'analyse pertinent pour PHP 8 n'est pas inclus dans le rapport.

Bien que nous nous attendions à ce que ces rapports contiennent un grand nombre de faux positifs car WordPress n'utilise pas de déclarations de type, et donc les types sont extrapolés à partir du code trouvé et des types affichés dans les docblocks, ces problèmes doivent toujours être examinés individuellement.

Peu importe que 1% des problèmes trouvés soient corrects, cela diminuerait encore à environ 450 erreurs, qui doivent encore être traitées. En plus de cela, la grande quantité de temps nécessaire pour éliminer les problèmes authentiques des faux positifs.

Scanner WordPress avec PHPStan

Les analyses avec PHPStan nécessitent un ensemble de règles entièrement personnalisé pour obtenir des résultats utilisables à distance, et pourtant, elles s'avèrent truffées de quelques faux positifs, rendant la sortie inutilisable.

Note : Nous ne critiquons pas l'outillage PHPStan, mais c'est en grande partie dû au fait que WordPress utilise très peu les déclarations de type, alors qu'en revanche, PHPStan penche plutôt pour les projets utilisant du code moderne, n'est-ce pas ?

Une analyse initiale comprenant les configurations les plus élémentaires produira plus de 20 000 problèmes. Une analyse avec l'ensemble de règles hautement personnalisé mentionné ci-dessus, ciblant spécifiquement les problèmes liés à PHP 8, génère toujours exactement 580 problèmes au niveau 5 et 2 150 problèmes potentiels supplémentaires au niveau 7. Ceux-ci contiendront probablement quelques faux positifs et généreront 380 problèmes de plus. au niveau 8 avec une mise en garde similaire.

Un ticket Trac a été récemment ouvert pour résoudre une liste de problèmes sur la base d'une configuration inconnue, mais entièrement ciblé sur les incompatibilités de type de paramètre passé (niveau 5). Un projet de PR est disponible pour résoudre ces problèmes.

Une évaluation initiale de ce PR indique que la plupart des correctifs proposés feraient un typage des variables dans le type attendu et masqueraient les problèmes, sans les résoudre en les vérifiant correctement. Cela entraîne un comportement inattendu dans l'application si ces modifications ne sont pas accompagnées de tests unitaires stricts. En plus de cela, cela entraîne probablement une difficulté croissante lors du débogage des erreurs plus loin sur la ligne à coup sûr.

Actuellement, il n'est pas confirmé si les correctifs proposés sont justifiés ou si les problèmes identifiés doivent être considérés comme de faux positifs.

Essai

L'analyse statique peut aller aussi loin en raison de la nature des swaps problématiques dans PHP8. L'examen et le test manuels des logiciels s'avèrent être un travail si laborieux, et les humains sont également assez enclins à ignorer les choses lorsqu'il y a beaucoup à surveiller.

Maintenant, en parlant de tests effectués par les utilisateurs finaux, ils s'avèrent relativement inutiles, car cela se traduira normalement par des «chemins heureux» testés. Si nous voulons obtenir des résultats plus fiables, nous avons besoin de tests exploratoires et de régression complets.

Essai

Avoir des tests automatisés de haute qualité et les exécuter sur PHP 8 est plus important que tout. Cela offrira une indication parfaite du problème PHP 8.0 à prévoir.

La plupart des tech-geeks sont enthousiasmés par PHP 8.0, et certainement, les changements sont énormes cette fois. tout le monde va prendre du temps pour comprendre la compatibilité, les configurations, les avantages, etc. de PHP 8, et parmi tous, l'une des plus grandes questions qui se pose est - "est-ce que WordPress est déjà compatible avec PHP 8, et si non, alors quelles actions sont nécessaires."

Eh bien, dès la sortie de PHP 8, notre temps d'expert a plongé dans le niveau de test le plus profond, et le résultat peut choquer n'importe qui ! oui, nous savons tout maintenant et éprouvons du plaisir à afficher nos rapports et les résultats des tests.

Passons maintenant à Exécuter des tests automatisés sur PHP 8.

Exécution de tests automatisés sur PHP 8

PHPUnit 9.3 est la première version de PHPUnit officiellement compatible avec PHP 8.0, et elle a été publiée en août 2020. Eh bien, exécuter une suite de tests automatisés fonctionnant sur PHP est difficile car l'outil de facto pour les tests unitaires.

en cours d'exécution-automatisé

Obtenir une suite de tests automatisés pour fonctionner sur PHP 8 nous emmène dans le prochain terrier de lapin en tant qu'outil de facto pour effectuer le test unitaire dans le monde PHP ; PHPUnit fait normalement une énorme version chaque année, avec chaque prise en charge majeure des versions précédentes de PHP. Il introduit des changements cassants, mais comme PHPUnit 9.3 est officiellement compatible avec PHP 8.0, comme nous l'avons mentionné ci-dessus, il n'y a pas lieu de s'inquiéter !

Nous savons qu'au minimum, WordPress prend toujours en charge PHP 5.6. Pour exécuter des tests sur PHP 8.0, toute suite de tests liée à WordPress doit être entièrement compatible avec PHPUnit 5 jusqu'à PHPUnit 9. Certes, les outils sont conçus pour vous aider avec cela ; cela consomme encore des efforts et du temps pour mettre en œuvre ces outils pour rendre une suite de tests compatible.

Exécution des tests sur PHP8 pour WordPress Core

Les tests pour WP Core sont actuellement réussis et exécutés sur PHP 8. Ces tests sont menés sur la version installée du compositeur de PHPUnit 7.5. Même si PHPUnit 9.3 est la plus ancienne version de PHPUnit officiellement compatible avec PHP 8.

Ce dernier problème a été résolu en copiant un nombre sélectionné de fichiers/classes de PHPUnit 9.3 vers la suite de tests WordPress, en excluant les classes natives de PHPUnit de la génération de chargement automatique Composer, prenant en charge l'utilisation de copies de PHPUnit 9.3 dans la suite de tests WordPress. Cela fonctionne, pour l'instant, cependant, nous l'appellerions une solution hacky, et il se peut qu'elle ne soit pas durable dans le futur, en plus de la maintenance dont elle peut actuellement avoir besoin.

Pour des raisons de qualité des tests, cela était certainement faible au départ, la vérification de type lâche étant utilisée dans la plupart des cas.

Pour aller plus loin, un ticket Trac pour résoudre ce problème a été ouvert en 2016. Compte tenu du respect plus strict des types en PHP, ce ticket a été restauré. De nombreux travaux ont été entrepris pour atténuer cela.

Pendant que nous écrivions, il y a environ 800 instances (676 assertEquals() ajoutés à 96 assertNotEquals()). Toujours en utilisant la vérification de type lâche - en baisse par rapport à plus de 8000 instances.

En partie, les assertions de type lâche qui subsistaient sont légitimes lorsque les objets sont comparés ; en partie, ceux-ci doivent certainement être abordés. Cependant, cela conduirait actuellement à des échecs de test. Ces derniers soulignent des lacunes soit dans les tests, mais plus occasionnellement, dans le code testé.

Tester des thèmes et des plugins

Il n'y a qu'un petit pourcentage des plugins disponibles, ceux développés par des professionnels et les plus populaires et qui ont des tests automatisés en place. De manière générale, cela est inquiétant car un site WordPress normal exécute à coup sûr près de 19 ou 20 plugins. De nombreux sites fonctionnent avec encore plus de plugins ! La mise en place de tests automatisés pour les thèmes est encore plus rare.

Il est difficile de permettre à ces suites de tests de s'exécuter sur la version 8 de PHP. Et aussi avant de pouvoir obtenir des informations sur la compatibilité des plugins et des thèmes avec PHP 8.

Cependant, les plugins/thèmes qui ont sont pour la plupart ceux où le nombre minimum de problèmes PHP 8.0 peut être attendu. Nous nous en exclamons car ces thèmes/plugins utilisent un modèle de développement professionnel.

La plus grande source de préoccupation est la multitude de tests et de thèmes sans tests, car ceux-ci sont plus susceptibles d'être problématiques lors de l'exécution avec PHP 8.

Pour les thèmes et les plugins, qui ont des tests, il existe principalement deux types de tests qu'ils peuvent ou non avoir en place :

  • Essais unitaires . Tests autonomes qui "détournent" WP pour permettre le test du code du plugin. Des frameworks populaires comme BrainMonkey et Mockery sont utilisés.
  • Essais d'intégration . Désormais, les tests d'intégration sont l'endroit où WordPress se charge avant d'exécuter la suite de tests, et il utilisera le code WPcore et s'intégrera à la suite de tests WP.

Essais d'intégration

Nous savons que WordPress a décidé de s'en tenir à PHPUnit 7.5. Qu'est-ce que cela signifie?

Eh bien, pour les tests d'intégration des thèmes et des plugins, ceux-ci seront également passés à PHPUnit 7.5 (maximum).

Les thèmes et les plugins devront soit copier le hack dans WP core pour que leurs tests d'intégration fonctionnent parfaitement, soit ils devront utiliser les fichiers dans WP Core. Cependant, ils devront ensuite créer un chargeur automatique personnalisé car le même hack de génération de chargement automatique Composer ne peut pas être utilisé.

Si les fichiers natifs PHPUnit doivent de toute façon être empêchés de se charger, un tel chargeur automatique personnalisé devra être sûrement démarré juste avant le fichier de chargement automatique Composer.

Tests unitaires

Pour les tests unitaires à l'aide de Mockery ou BrainMonkey, PHPUnit > 8 est requis car le framework Mockery disponible pour PHPUnit 7.x n'est pas compatible avec PHP 8.0. Par conséquent, la comparabilité de ces suites de tests est obligatoire avec PHPUnit 5 à 9, ce qui ajoute certainement un autre défi.

Comment?

Différentes versions de PHPUnit sont nécessaires pour exécuter chaque suite de tests lorsque les deux types de suites de tests sont utilisés. Pour aggraver cette circonstance, les plugins auront normalement un fichier composer.lock validé pour s'assurer que leurs dépendances d'exécution sont à une version donnée sur laquelle ils peuvent compter et qui est entièrement compatible avec PHP 5.6.

Tests unitaires

À certains moments, cette dernière partie est renforcée en ayant une sorte de configuration de plate-forme php 5.6 dans le fichier composer.json. Cela signifie également que leurs dépendances de développement BrainMonkey, Mockery, PHPUnit seront également verrouillées sur une version compatible avec PHP 5.6. maintenant, cela empêcherait sûrement d'exécuter des tests sur PHP 8.0.

Vous pouvez surmonter cela en supprimant la plate-forme à la volée en plus de mettre à jour les fichiers composer.lock et composer.json. Cependant, cela rend l'exécution des tests sur PHP 8.0 plus complexe, à la fois en CI et localement, pour ses développeurs.

La compatibilité PHP 8 semble quelque peu délicate sur les grands sites WordPress

En enquêtant simplement sur une chaîne de changements de rupture dans PHP 8, nous avons pu confirmer que cela est susceptible de provoquer d'énormes ruptures sur des sites dont la raison n'est pas claire. À certains moments, l'erreur se produira à un endroit mais est générée par un thème ou un plugin à un autre endroit, ce qui rendrait certainement ces problèmes assez difficiles à déboguer.

accuwebhosting.com est certainement un site WordPress activement entretenu, et une équipe dédiée de développeurs professionnels le prend en charge. La grande majorité des sites WordPress n'ont pas un tel luxe, et atténuer les problèmes de compatibilité sur ces sites sera certainement difficile.

Combien de temps les développeurs ont-ils pour mettre à jour ?

Le cycle de vie de chaque version de PHP est de 2 ans, et les bogues sont corrigés à cette époque. Une année supplémentaire s'ajoute pendant laquelle les problèmes de sécurité sont corrigés. PHP 7.4 est arrivé en novembre 2019. C'était la version finale de PHP 7. Cela signifie que les bogues de PHP 7.4 vont être corrigés jusqu'en novembre 2021. Les problèmes de sécurité seront corrigés jusqu'en novembre 2022. Il atteindra sa « fin de vie ». à ce moment-là.

les développeurs doivent mettre à jour

Par conséquent, la date limite définitive est novembre 2022 : tout le code PHP doit être compatible avec PHP 8 à ce moment-là, ou les risques d'être bloqué sur une version PHP potentiellement vulnérable.

Conclusion

PHP 8 contiendra de nombreuses modifications avec rupture. Nous avons décrit une bonne gamme de ces changements dans notre rapport, ceux qui, selon nos experts, auront l'impact le plus féroce sur WordPress en plus de l'écosystème WordPress plus large. Ceux-ci doivent généralement faire face à des avertissements qui deviennent des problèmes. Et plusieurs erreurs sont introduites, ce qui peut être difficile à gérer. Vous pouvez détecter un pourcentage plus élevé de ces modifications lors de l'exécution.

Résoudre tous ces problèmes de compatibilité est une tâche énorme. Pour ce faire, vous devez utiliser diverses stratégies, allant de l'analyse statique aux tests automatisés. Cela demande beaucoup de temps et d'efforts.

Vous devriez avoir le droit à l'outil pour tout mener parfaitement. Pour des projets tels que WordPress, qui doivent prendre en charge diverses versions de PHP, plusieurs complexités supplémentaires sont introduites pour jongler avec différentes versions des outils d'analyse, comme nous l'avons expliqué ci-dessus.

Certes, cela devient assez difficile car les différences d'exécution et de syntaxe entre PHP 5 et 8 sont incroyablement énormes.

Utiliser PHP 8 sur WordPress est-il bon ou pas ? En fait n'est pas l'argument ici. La seule conclusion ici est qu'il devient très difficile de le faire.

Nous avons également examiné la question de la couverture et des dépendances PHP de WordPress. Si vous souhaitez détecter de manière fiable la compatibilité, une couverture de test élevée s'avère nécessaire. Et en parlant de PHP 8, c'est encore plus important car le nombre de problèmes de compatibilité est plus élevé que d'habitude. Un pourcentage important d'entre eux peuvent être détectés uniquement lors de l'exécution.

Alors, que conseillons-nous ?

Si des problèmes sont détectés, un débogage approfondi est nécessaire pour trouver la racine du problème, qu'il s'agisse de WordPress, d'un thème, d'un plugin ou qu'il soit directement associé à la compatibilité PHP.

La couverture des tests est pratiquement absente pour les dépendances et faible. Par conséquent, il est difficile de dire quelle est la compatibilité du cœur de WordPress avec PHP 8 au sens propre.

Parce que PHP 8 se concentre si profondément sur le typage strict, le système d'extensibilité de type non sécurisé de WP devient extrêmement vulnérable aux problèmes, ce qui peut conduire à des plugins générant des erreurs de type dans d'autres plugins ou WP lui-même.

Nous avons mis cela à l'épreuve en exécutant une analyse sur les données d'erreur le mois dernier. En tant qu'énorme site, nous avons pensé qu'il pourrait donner une bonne indication des types de problèmes auxquels nous pouvons nous attendre. Certes, nous avons relevé plusieurs avertissements qui évolueront en erreurs avec PHP 8.

Nous préférerions faire une note finale ici. WordPress n'est pas la seule base de code héritée disponible. De plus, ce n'est pas le seul projet qui vise à prendre en charge une vaste gamme de versions de PHP. Les informations contenues dans cet article peuvent également s'appliquer à d'autres projets.

L'objectif principal de cet article d' Accuweb est d'informer et de faire un tour d'horizon des défis et des problèmes liés à la compatibilité PHP 8 dans WP. Nous espérons vivement qu'il servira parfaitement cet objectif.