{"id":66997,"date":"2023-03-07T11:39:39","date_gmt":"2023-03-07T10:39:39","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=66997&#038;preview=true&#038;preview_id=66997"},"modified":"2023-08-22T09:58:38","modified_gmt":"2023-08-22T08:58:38","slug":"passer-a-php-8","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/","title":{"rendered":"Passer \u00e0 PHP 8.x en quatre \u00e9tapes &#8211; Un entretien avec Juliette Reinders Folmer"},"content":{"rendered":"<p>Mettre \u00e0 niveau un site, une extension ou un th\u00e8me WordPress vers une nouvelle version de PHP est une t\u00e2che qui revient r\u00e9guli\u00e8rement. Mais comment faire pour la r\u00e9aliser aussi efficacement que possible ? Comment savez-vous que vous n&rsquo;oublierez rien ? Existe-t-il une feuille de route pour cela ?<\/p>\n<p>Dans cet article, nous r\u00e9pondrons \u00e0 ces questions (et \u00e0 bien d&rsquo;autres) et examinerons ce qu&rsquo;implique une transition en douceur vers PHP 8.x pour votre site, extension ou th\u00e8me WordPress, y compris une feuille de route.<\/p>\n<p>Pour cela, nous nous baserons sur un entretien que nous avons r\u00e9alis\u00e9 avec l&rsquo;experte PHP Juliette Reinders Folmer. Elle consacre la majeure partie de son quotidien \u00e0 la programmation et \u00e0 tout ce qui l&rsquo;entoure, en se concentrant principalement sur les projets open source, dont WordPress.<\/p>\n<p>\u00cates-vous pr\u00eat \u00e0 franchir le pas en douceur vous aussi ? Vous \u00eates curieux de conna\u00eetre notre plan \u00e9tape par \u00e9tape ? Alors plongeons-y !<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>PHP 8.x &#8211; Ce qui a chang\u00e9<\/h2>\n<p>Pour un aper\u00e7u des changements, nous vous recommandons les articles ci-dessous :<\/p>\n<ul>\n<li>Notes de version pour <a href=\"https:\/\/www.php.net\/releases\/8.0\/en.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.0<\/a> et <a href=\"https:\/\/www.php.net\/releases\/8.1\/en.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.1<\/a><\/li>\n<li>Guide de migration pour <a href=\"https:\/\/www.php.net\/manual\/en\/migration80.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.0<\/a> et <a href=\"https:\/\/www.php.net\/manual\/en\/migration81.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.1<\/a><\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2020\/11\/23\/wordpress-and-php-8-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress et PHP 8.0<\/a> et <a href=\"https:\/\/make.wordpress.org\/core\/2022\/01\/10\/wordpress-5-9-and-php-8-0-8-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">\u00e9tat actuel<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8\/\">Nouveaut\u00e9s de PHP 8.0<\/a> et <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8-1\/\">PHP 8.1<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/fr\/blog\/php-8-2\/\">Nouveaut\u00e9s de PHP 8.2<\/a> et <a href=\"https:\/\/www.php.net\/manual\/en\/migration82.php\">guide de migration vers PHP 8.2<\/a>.<\/li>\n<\/ul>\n<p>Apr\u00e8s avoir lu ces articles, vous serez parfaitement au courant de ce qui a chang\u00e9 dans PHP 8.x et de ce que vous devez faire pour que vos projets PHP fonctionnent sans probl\u00e8me.<\/p>\n<p>Si vous n&rsquo;\u00eates pas s\u00fbr de la meilleure fa\u00e7on de commencer, pas de probl\u00e8me. Dans la conversation avec Juliette, nous en avons discut\u00e9 en d\u00e9tail, et nous vous expliquerons dans cet article de la mani\u00e8re la plus compl\u00e8te possible comment vous pouvez passer \u00e0 PHP 8.x.<\/p>\n<p>Nous vous expliquerons \u00e9galement dans des encadr\u00e9s informatifs comment effectuer diverses op\u00e9rations dans <a href=\"https:\/\/kinsta.com\/fr\/mykinsta\/\">MyKinsta<\/a>, notre panneau de contr\u00f4le propri\u00e9taire pour tous vos sites, applications et bases de donn\u00e9es WordPress.<\/p>\n<h2>Passage \u00e0 PHP 8.x : Comment d\u00e9marrer<\/h2>\n<p>Passer \u00e0 PHP 8.x semble simple, et techniquement, \u00e7a l&rsquo;est. De nombreux h\u00e9bergeurs vous permettent de sp\u00e9cifier la version de PHP que vous souhaitez utiliser pour votre site web dans le panneau d&rsquo;administration. Chez Kinsta, le <a href=\"https:\/\/kinsta.com\/fr\/changelog\/php-8\/\">changement de version de PHP<\/a> se fait en un seul clic dans le tableau de bord MyKinsta.<\/p>\n<p>Mais avant de le faire, il y a certaines choses dont vous devez \u00eatre s\u00fbr. En fonction de votre niveau de connaissance et d&rsquo;exp\u00e9rience, nous vous recommandons ce qui suit :<\/p>\n<ul>\n<li>Si vous avez construit votre propre site WordPress avec des th\u00e8mes et des extensions standard, sans avoir beaucoup de connaissances en PHP, faites appel \u00e0 un d\u00e9veloppeur ou \u00e0 une agence pour v\u00e9rifier si votre site est apte \u00e0 fonctionner avec PHP 8.x. Vous cherchez un tiers qui peut vous aider ? Consultez alors <a href=\"https:\/\/kinsta.com\/fr\/partenaires\/\">notre page Partenaires<\/a> qui liste plusieurs entreprises de confiance qui peuvent vous aider.<\/li>\n<li>Si votre site WordPress a \u00e9t\u00e9 construit par une partie externe, un d\u00e9veloppeur ou une agence, contactez-les pour leur demander si votre site peut fonctionner avec PHP 8.x.<\/li>\n<li>Si vous avez construit votre site WordPress &#8211; avec votre propre th\u00e8me personnalis\u00e9, par exemple, ou des extensions d\u00e9velopp\u00e9es par vous-m\u00eame &#8211; nous avons une feuille de route pour vous ci-dessous.<\/li>\n<\/ul>\n<p>Si votre site entre dans l&rsquo;une des deux premi\u00e8res cat\u00e9gories, nous vous invitons certainement \u00e0 lire le reste de l&rsquo;article, mais nous ne vous recommandons pas de commencer \u00e0 tester vous-m\u00eame la compatibilit\u00e9 de votre site avec PHP 8. Laissez cela aux professionnels.<\/p>\n<p>Quel que soit votre choix, nous vous conseillons de ne pas simplement passer votre site en production en PHP 8 et de \u00ab voir si \u00e7a marche \u00bb Vous \u00eates curieux de savoir \u00e0 quoi ressemblera votre site, et vous \u00eates impatient de le voir fonctionner en PHP 8 ? Alors commencez \u00e0 tester dans un environnement de staging. Un bon h\u00e9bergeur vous permettra de <a href=\"https:\/\/kinsta.com\/fr\/blog\/staging-wordpress\/\">configurer facilement un environnement de staging<\/a>.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Cr\u00e9er un environnement de staging avec Kinsta est facile.<\/p>\n<p>Dans <a href=\"https:\/\/my.kinsta.com\/?lang=fr?lang=en\">MyKinsta<\/a>, cliquez sur <strong>Sites WordPresss <\/strong>dans la navigation de gauche. Vous verrez maintenant une liste de vos sites\/installations WordPress. Choisissez le site pour lequel vous souhaitez cr\u00e9er un environnement de staging, cliquez sur le <strong>s\u00e9lecteur d&rsquo;environnement <\/strong>\u00e0 c\u00f4t\u00e9 du nom du site et choisissez de <strong>cr\u00e9er un nouvel environnement <\/strong>dans le menu d\u00e9roulant. Dans la modale\/popup <strong>Cr\u00e9er un nouvel environnement <\/strong>qui appara\u00eet, nommez votre environnement, choisissez <strong>Environnement par d\u00e9faut<\/strong>, et cliquez sur le bouton <strong>Cr\u00e9er un nouvel environnement <\/strong>.<\/p>\n<p>Ensuite, il vous sera demand\u00e9 de choisir l&rsquo;environnement que vous souhaitez cr\u00e9er. Choisissez l&rsquo;option 1, <strong>Cloner un environnement existant<\/strong>. Cliquez ensuite sur le bouton <strong>Cr\u00e9er un nouvel environnement<\/strong>, apr\u00e8s quoi la cr\u00e9ation du nouvel environnement commencera. Cela peut prendre quelques minutes. Une fois le processus termin\u00e9, vous pouvez choisir le nouvel environnement de mise \u00e0 staging par d\u00e9faut dans le menu d\u00e9roulant du <strong>s\u00e9lecteur d&rsquo;environnement <\/strong>situ\u00e9 \u00e0 c\u00f4t\u00e9 du nom du site.<\/p>\n<p>En savoir plus sur la fa\u00e7on de <a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/environnement-staging\/\">cr\u00e9er un environnement de staging<\/a>.<\/p>\n<\/aside>\n\n<figure id=\"attachment_147928\" aria-describedby=\"caption-attachment-147928\" style=\"width: 2864px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147928 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/mykinsta-create-new-environment-eng0.png\" alt=\"MyKinsta - Cr\u00e9er un nouvel environnement\" width=\"2864\" height=\"968\"><figcaption id=\"caption-attachment-147928\" class=\"wp-caption-text\">MyKinsta &#8211; Cr\u00e9er un nouvel environnement<\/figcaption><\/figure>\n<p>Dans l&rsquo;environnement de staging, vous pouvez activer PHP 8.x et voir si cette mise \u00e0 jour fonctionne bien avec votre site. Il est \u00e9galement possible de travailler avec une copie locale de votre site. Avec notre <a href=\"https:\/\/kinsta.com\/fr\/devkinsta\/\">outil de d\u00e9veloppement gratuit DevKinsta<\/a>, vous pouvez facilement importer votre site \u00e0 partir du <a href=\"https:\/\/kinsta.com\/fr\/mykinsta\/\">tableau de bord MyKinsta<\/a>, apr\u00e8s quoi vous pouvez changer la version PHP en 8.0 ou 8.1.<\/p>\n<p>Si vous ne voyez aucun probl\u00e8me dans l&rsquo;environnement de staging, cela ne signifie pas n\u00e9cessairement qu&rsquo;il n&rsquo;y en a pas. La feuille de route ci-dessous vous expliquera pourquoi.<\/p>\n<h2>Tests de compatibilit\u00e9 avec PHP 8.x : La feuille de route<\/h2>\n<p>Les tests : le mot cl\u00e9 d&rsquo;un bon logiciel. M\u00eame pour les sites web WordPress et leurs composants, tels que les th\u00e8mes, les extensions et le c\u0153ur de WordPress, les tests sont le moyen de s&rsquo;assurer que les choses que vous ne voulez pas voir se produire ne se produisent pas.<\/p>\n<p>Un projet de d\u00e9veloppement de logiciel est en grande partie constitu\u00e9 de tests. Dans cet article, nous examinons sp\u00e9cifiquement les tests qui peuvent vous aider \u00e0 faire en sorte que la transition vers PHP 8.x se fasse en douceur. Dans notre article sur les outils DevOps, vous trouverez une section avec une <a href=\"https:\/\/kinsta.com\/fr\/blog\/outils-devops\/#devops-testtools\">collection d&rsquo;outils<\/a> que vous pouvez utiliser.<\/p>\n<p>Les types de tests suivants sont abord\u00e9s dans cet article de blog :<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<p>Examinons de plus pr\u00e8s les diff\u00e9rents types de tests que nous pouvons effectuer.<\/p>\n<h3>Analyse statique (ou test statique)<\/h3>\n<p>La premi\u00e8re mesure que vous pouvez prendre en tant que d\u00e9veloppeur PHP est d&rsquo;effectuer une analyse statique de votre code avec diff\u00e9rents outils. L&rsquo;analyse statique est le processus d&rsquo;analyse d&rsquo;un logiciel sans ex\u00e9cuter le code. Gr\u00e2ce \u00e0 l&rsquo;analyse statique, il est possible de d\u00e9tecter les erreurs, de d\u00e9tecter les probl\u00e8mes de compatibilit\u00e9 avec PHP 8.x, d&rsquo;appliquer les normes de codage (par exemple, les <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/best-practices\/coding-standards\/\" target=\"_blank\" rel=\"noopener noreferrer\">normes de codage de WordPress<\/a>), et m\u00eame de modifier et de nettoyer le code.<\/p>\n<h4>Outils d&rsquo;analyse statique<\/h4>\n<p>Vous pouvez effectuer une analyse statique avec diff\u00e9rents outils, tels que :<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility\" target=\"_blank\" rel=\"noopener noreferrer\">PHPCompatibility<\/a><\/li>\n<li><a href=\"https:\/\/psalm.dev\/\" target=\"_blank\" rel=\"noopener noreferrer\">Psalm<\/a><\/li>\n<li><a href=\"https:\/\/phpstan.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPStan<\/a><\/li>\n<\/ul>\n<p>Au moment de la r\u00e9daction de cet article, toutes les v\u00e9rifications de PHP 8.1 ne sont pas support\u00e9es dans la derni\u00e8re version de PHPCompatibility. Les v\u00e9rifications de PHP 8.1 peuvent \u00eatre dans la version de d\u00e9veloppement, donc assurez-vous d&rsquo;utiliser celles-ci (pour l&rsquo;instant) lorsque vous utilisez PHPCompatibility pour analyser votre projet et voir quelles sont les erreurs\/recommandations.<\/p>\n<p>Les v\u00e9rifications de PHP 8.1 seront bient\u00f4t publi\u00e9es dans une nouvelle version <em>majeure <\/em>. Si vous voulez \u00eatre tenu au courant de cela, et que vous avez un compte GitHub, ouvrez le <a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility\" target=\"_blank\" rel=\"noopener noreferrer\">d\u00e9p\u00f4t GitHub de PHPCompatibility<\/a> et naviguez vers <strong>Watch<\/strong> -&gt; <strong>Custom<\/strong> -&gt; <strong>Releases<\/strong>, o\u00f9 vous pouvez choisir d&rsquo;\u00eatre notifi\u00e9 quand une nouvelle version est publi\u00e9e.<\/p>\n<p>PHPCompatibility, qui ne teste la compatibilit\u00e9 que pour une version particuli\u00e8re (ou une gamme de versions) de PHP, est facile \u00e0 configurer. Vous obtenez les meilleurs r\u00e9sultats si vous ex\u00e9cutez un <a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions\" target=\"_blank\" rel=\"noopener noreferrer\">testVersion<\/a> &#8211; par exemple, 8.0+ (8.0 et plus) &#8211; dans PHPCompatibility.<\/p>\n<p>Vous devez \u00eatre attentif aux fonctions d\u00e9pr\u00e9ci\u00e9es ou supprim\u00e9es, aux valeurs par d\u00e9faut modifi\u00e9es des param\u00e8tres de fonction, \u00e0 l&rsquo;utilisation de concat sans parenth\u00e8ses, \u00e0 l&rsquo;utilisation de match comme nom de fonction (puisqu&rsquo;il est r\u00e9serv\u00e9 depuis PHP 8.0), etc.<\/p>\n<figure id=\"attachment_147872\" aria-describedby=\"caption-attachment-147872\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147872 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/PHPCompatibility-1024x619-1.png\" alt=\"Capture d'\u00e9cran de la page GitHub de PHPCompatibility\" width=\"1024\" height=\"619\"><figcaption id=\"caption-attachment-147872\" class=\"wp-caption-text\">Capture d&rsquo;\u00e9cran de la page GitHub de PHPCompatibility<\/figcaption><\/figure>\n<p>Psalm et PHPStan sont de bons ajouts et peuvent vous aider en effectuant des v\u00e9rifications suppl\u00e9mentaires li\u00e9es aux types de variables. L&rsquo;inconv\u00e9nient de ces outils est qu&rsquo;il faut beaucoup de configuration pour obtenir des rapports sur PHP 8.0 et 8.1. M\u00eame s&rsquo;ils r\u00e9ussissent, vous pouvez vous attendre \u00e0 de nombreux faux positifs. Les faux positifs sont des notifications donn\u00e9es \u00e0 tort, caus\u00e9es par les limites de l&rsquo;analyse statique.<\/p>\n<p>De solides connaissances sont n\u00e9cessaires pour interpr\u00e9ter correctement les r\u00e9sultats de ces deux outils, mais ces connaissances peuvent vous aider \u00e0 identifier des incompatibilit\u00e9s suppl\u00e9mentaires que PHPCompatibility ne peut pas trouver. Consultez la documentation de <a href=\"https:\/\/psalm.dev\/docs\/\" target=\"_blank\" rel=\"noopener noreferrer\">Psalm<\/a> et <a href=\"https:\/\/phpstan.org\/user-guide\/getting-started\" target=\"_blank\" rel=\"noopener noreferrer\">PHPStan<\/a> si vous souhaitez en savoir plus sur ces outils.<\/p>\n<p>R\u00e9sum\u00e9 :<\/p>\n<ul>\n<li>Effectuez une analyse statique avec PHPCompatibility, Psalm, PHPStan<\/li>\n<li>R\u00e9solvez tous les probl\u00e8mes l\u00e9gitimes<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Conseil d&rsquo;expert de Juliette<\/strong><\/p>\n<p>Lors de vos tests, dans votre fichier php.ini\/wp-config.php, mettez le error_reporting \u00e0 -1. Ceci est d\u00fb au fait que E_ALL, selon la version de PHP, ne contient pas tout.<\/p>\n<p>Ce n&rsquo;est qu&rsquo;\u00e0 partir de la version 8.0 que E_ALL contient tout. Activez \u00e9galement l&rsquo;option log_errors pour consulter les notifications dans un fichier journal.<\/p>\n<p>N&rsquo;activez pas la journalisation des erreurs sur un site en production, car cela peut entra\u00eener des retards, car il faut \u00e9crire des donn\u00e9es dans un fichier. Faites donc cela dans un environnement de test et assurez-vous de savoir ce qui se passe ou ce qui \u00e9choue.<\/p>\n<p>Pour voir vos journaux dans MyKinsta, allez sur le site et cliquez sur <strong>Journaux <\/strong>dans le menu. Ici, vous pouvez voir les fichiers error.log et access.log et \u00e9tudier toutes les entr\u00e9es du journal.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/depannage-wordpress\/voir-journaux-serveur\/\">Cliquez ici pour en savoir plus sur la visualisation des journaux dans MyKinsta<\/a>.<\/p>\n<\/aside>\n\n<figure id=\"attachment_147929\" aria-describedby=\"caption-attachment-147929\" style=\"width: 2806px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147929 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/mykinsta-access-logs-eng0.png\" alt=\"MyKinsta - Visualisation des fichiers journaux\" width=\"2806\" height=\"1746\"><figcaption id=\"caption-attachment-147929\" class=\"wp-caption-text\">MyKinsta &#8211; Visualisation des fichiers journaux<\/figcaption><\/figure>\n<h3>Test unitaire<\/h3>\n<p>L&rsquo;\u00e9tape suivante du processus est le test unitaire. Les tests unitaires sont une m\u00e9thode permettant de tester des morceaux de code individuellement. Dans les tests unitaires, des tests sp\u00e9cifiques cibl\u00e9s seront d\u00e9velopp\u00e9s pour chaque unit\u00e9. Cela implique l&rsquo;ex\u00e9cution de diff\u00e9rents sc\u00e9narios. De pr\u00e9f\u00e9rence, chaque sc\u00e9nario est test\u00e9 s\u00e9par\u00e9ment des autres afin que les tests soient ind\u00e9pendants les uns des autres.<\/p>\n<p>Avoir des tests unitaires seuls, bien s\u00fbr, ne suffit pas. Ils doivent \u00e9galement \u00eatre ex\u00e9cut\u00e9s. La meilleure fa\u00e7on d&rsquo;automatiser les tests unitaires est d&rsquo;utiliser un outil d&rsquo;int\u00e9gration continue (IC) tel que <a href=\"https:\/\/www.jenkins.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jenkins<\/a>, <a href=\"https:\/\/github.com\/features\/actions\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Actions<\/a> ou <a href=\"https:\/\/www.travis-ci.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Travis<\/a>.<\/p>\n<figure id=\"attachment_147875\" aria-describedby=\"caption-attachment-147875\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147875 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/github-actions-1024x687-1.png\" alt=\"Un exemple de GitHub Actions\" width=\"1024\" height=\"687\"><figcaption id=\"caption-attachment-147875\" class=\"wp-caption-text\">Un exemple de GitHub Actions<\/figcaption><\/figure>\n<h4>Prise en charge de plusieurs versions de PHP<\/h4>\n<p>En tant que cr\u00e9ateur d&rsquo;extensions, si vous souhaitez prendre en charge plusieurs versions de PHP, assurez-vous que les tests dans l&rsquo;IC sont ex\u00e9cut\u00e9s contre toutes les versions de PHP que vous prenez en charge.<\/p>\n<p>Bien s\u00fbr, vous pouvez aussi ne prendre en charge que les versions les plus r\u00e9centes, le choix vous appartient enti\u00e8rement.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Conseil d&rsquo;expert de Juliette<\/strong><\/p>\n<p>Sur GitHub Actions, vous pouvez d\u00e9j\u00e0 tester contre PHP 8.2, ce qui vous permettra d&rsquo;\u00eatre averti \u00e0 temps des nouvelles modifications de PHP dont vous devez tenir compte.<\/p>\n<\/aside>\n\n<p>Tester avec plusieurs versions de PHP n\u00e9cessite que vous utilisiez plusieurs versions de PHPUnit, en fonction de la version de PHP. Comme PHPUnit a introduit plusieurs changements au cours des ann\u00e9es qui affectent la fa\u00e7on dont les tests sont \u00e9crits, cette partie peut \u00eatre d\u00e9licate.<\/p>\n<p>Pour contourner cela, vous pouvez utiliser les <a href=\"https:\/\/github.com\/Yoast\/PHPUnit-Polyfills\" target=\"_blank\" rel=\"noopener noreferrer\">Polyfills de PHPUnit<\/a> (\u00e9crits par Juliette et sponsoris\u00e9s par <a href=\"https:\/\/kinsta.com\/partners\/yoast\/\">Yoast<\/a>). Cela vous permet d&rsquo;\u00e9crire des tests qui ne sont officiellement pas pris en charge par PHPUnit 9 (et qui peuvent donc fonctionner sur PHP 8.x). Les Polyfills font alors fonctionner vos tests dans PHPUnit 4.x \u00e0 9.x et avec PHP 5.4 \u00e0 PHP 8.1 (\u00e0 partir de maintenant).[\/notice]<\/p>\n<p>Maintenant que les tests fonctionnent, l&rsquo;\u00e9tape suivante consiste \u00e0 s&rsquo;assurer que les probl\u00e8mes trouv\u00e9s dans les tests sont corrig\u00e9s.<\/p>\n<h4>Couverture du code<\/h4>\n<p>L&rsquo;ex\u00e9cution de ces tests est le moyen le plus fiable de trouver des incompatibilit\u00e9s entre versions.<\/p>\n<p>Ce faisant, faites attention \u00e0 la <em>couverture de code <\/em>de vos tests :<\/p>\n<ul>\n<li>Supposons que vous ayez une fonction A et que vous ayez \u00e9crit un test pour celle-ci, et que la fonction A appelle les fonctions B, C et D dans le cadre de la logique de la fonction.<\/li>\n<li>Le test de la fonction A est \u00e9crit pour tester la logique de la fonction A, mais il appellera \u00e9galement les fonctions B, C et D pendant le test. Pour les fonctions B, C et D, vous ne testez g\u00e9n\u00e9ralement que le \u00ab chemin heureux \u00bb &#8211; la situation o\u00f9 tout se passe bien &#8211; et donc, ces fonctions ne sont pas encore enti\u00e8rement test\u00e9es, m\u00eame si (une partie) du code de ces fonctions est ex\u00e9cut\u00e9e pendant le test de la fonction A.<\/li>\n<li>Pour chacun de vos tests, indiquez quel code est sp\u00e9cifiquement test\u00e9. Vous le faites en donnant \u00e0 chaque test un <a href=\"https:\/\/phpunit.readthedocs.io\/en\/9.5\/code-coverage-analysis.html#specifying-covered-code-parts\" target=\"_blank\" rel=\"noopener noreferrer\">@covers<\/a>. De cette fa\u00e7on, B, C et D ne sont pas \u00ab\u00a0compt\u00e9s\u00a0\u00bb dans le calcul de la couverture du code, ce qui vous permet de voir quelle partie de votre code est couverte par les tests.<\/li>\n<\/ul>\n<p>Souvent, les d\u00e9veloppeurs \u00e9crivent et testent &#8211; parfois m\u00eame sans le savoir &#8211; pour le \u00ab chemin heureux \u00bb Dans ces cas, il est \u00e9galement n\u00e9cessaire de tester ce qui se passe lorsque des donn\u00e9es inattendues sont transmises \u00e0 une fonction. <strong>Tester uniquement avec les valeurs\/types attendus n&rsquo;est pas suffisant<\/strong>.<\/p>\n\n<p>La deuxi\u00e8me partie de la citation ci-dessus est souvent oubli\u00e9e, alors qu&rsquo;elle est peut-\u00eatre encore plus importante que la premi\u00e8re partie. Que se passe-t-il si vous passez un type incorrect ? Obtenez-vous un message d&rsquo;erreur ? Ou bien la variable pass\u00e9e avec la fonction se poursuit-elle normalement ? Que se passe-t-il si une valeur inattendue est transmise \u00e0 la fonction ?<\/p>\n<p>Veillez \u00e0 tester vos fonctions avec des variables, des types et des valeurs inattendus. Ce n&rsquo;est qu&rsquo;ainsi que vous pourrez vous fier \u00e0 vos tests pour trouver les probl\u00e8mes qu&rsquo;une nouvelle version de PHP pourrait causer.<\/p>\n<h4>PHP devient plus strict<\/h4>\n<p>PHP devient plus pr\u00e9cis (strict) dans la fa\u00e7on dont il g\u00e8re les \u00ab types \u00bb pour les fonctions propres \u00e0 PHP, ainsi que des choses comme les propri\u00e9t\u00e9s dynamiques. Ces changements sont g\u00e9n\u00e9ralement destin\u00e9s \u00e0 aider les d\u00e9veloppeurs \u00e0 fournir un code sans erreur (enfin, un code avec moins d&rsquo;erreurs). Mais cela peut repr\u00e9senter un obstacle \u00e0 la mise \u00e0 niveau pour le code pr\u00e9existant \u00e9crit sur la base des \u00ab anciens \u00bb principes de PHP.<\/p>\n<p>En raison de cette volont\u00e9 d&rsquo;obtenir des messages d&rsquo;erreur plus utiles en PHP, vous pouvez constater que l&rsquo;adaptation du code existant aux nouvelles versions de PHP prend de plus en plus de temps. Adapter du code qui fonctionnait avec PHP 5.6 \u00e0 PHP 7.0 ne prend qu&rsquo;une fraction du temps dans la plupart des cas, compar\u00e9 \u00e0 la mise \u00e0 jour du code pour le rendre compatible avec PHP 8.1. Et ce, malgr\u00e9 le fait que PHP 7.0 \u00e9tait une version \u00ab majeure \u00bb, alors que PHP 8.1 est une version \u00ab mineure \u00bb<\/p>\n<p>Dans de nombreux cas, les tests sont encore le seul moyen fiable de d\u00e9terminer ce qui doit \u00eatre modifi\u00e9 pour supporter une nouvelle version.<\/p>\n<p>Les tests unitaires sont possibles avec divers outils, notamment :<\/p>\n<ul>\n<li><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit<\/a><\/li>\n<li><a href=\"http:\/\/docs.mockery.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mockery<\/a><\/li>\n<li><a href=\"https:\/\/docs.behat.org\/en\/latest\/\" target=\"_blank\" rel=\"noopener noreferrer\">Behat<\/a>,<\/li>\n<li><a href=\"http:\/\/datasift.github.io\/storyplayer\/v2\/using\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\">Storyplayer<\/a><\/li>\n<\/ul>\n<p>Beaucoup de ces outils sont construits sur la base de, ou en conjonction avec, PHPUnit.<\/p>\n<p>En fin de compte, les outils que vous utilisez n&rsquo;ont pas d&rsquo;importance. La chose la plus importante est que vous testiez, et que vous fassiez fonctionner les tests sur les nouvelles versions de PHP. Cette \u00e9tape peut parfois \u00eatre tr\u00e8s d\u00e9licate, mais heureusement, comme mentionn\u00e9 pr\u00e9c\u00e9demment, il existe des outils pour cela, tels que <a href=\"https:\/\/github.com\/Yoast\/PHPUnit-Polyfills\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit Polyfills<\/a>.<\/p>\n<h3>Tests d&rsquo;int\u00e9gration<\/h3>\n<p>Les tests d&rsquo;int\u00e9gration sont l&rsquo;\u00e9tape suivante que nous allons effectuer, apr\u00e8s l&rsquo;analyse statique et les tests unitaires. Un test d&rsquo;int\u00e9gration consiste \u00e0 tester des situations r\u00e9elles dans un contexte plus large qu&rsquo;une simple \u00ab unit\u00e9 de code \u00bb Il s&rsquo;agit notamment de tests avec une base de donn\u00e9es (de test) active ou de tests avec une API externe, pour ne donner que deux exemples.<\/p>\n<p>Ainsi, lorsque vous testez le code d&rsquo;une extension ou d&rsquo;un th\u00e8me dans le contexte de WordPress et que vous utilisez une version r\u00e9elle, il s&rsquo;agit, par d\u00e9finition, de tests d&rsquo;int\u00e9gration.<\/p>\n<p>WP Test Utils (encore une fois \u00e9crit par Juliette et sponsoris\u00e9 par Yoast) est un excellent outil pour les tests d&rsquo;int\u00e9gration. WP Test Utils fournit des outils pour \u00e9crire des tests d&rsquo;int\u00e9gration et des tests unitaires, dans lesquels WordPress est \u00ab maquill\u00e9 \u00bb \u00e0 l&rsquo;aide de <a href=\"https:\/\/github.com\/Brain-WP\/BrainMonkey\" target=\"_blank\" rel=\"noopener noreferrer\">Brainmonkey<\/a> et <a href=\"http:\/\/docs.mockery.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mockery<\/a>, o\u00f9 les fonctions courantes de WordPress sont \u00ab\u00a0truqu\u00e9es\u00a0\u00bb afin que vous testiez votre propre code et non celui de WordPress.<\/p>\n<figure id=\"attachment_147877\" aria-describedby=\"caption-attachment-147877\" style=\"width: 911px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147877 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/wp-test-utils.png\" alt=\"WP Test Utilities sur GitHub\" width=\"911\" height=\"648\"><figcaption id=\"caption-attachment-147877\" class=\"wp-caption-text\">WP Test Utilities sur GitHub<\/figcaption><\/figure>\n<p>Les tests d&rsquo;int\u00e9gration avec WordPress sont une histoire plus d\u00e9licate car ils impliquent une int\u00e9gration avec WordPress et la suite de tests de WordPress. En fonction des versions de WordPress qu&rsquo;une extension ou un th\u00e8me prend en charge, vous devez consid\u00e9rer quelles versions de PHPUnit sont prises en charge par WordPress lui-m\u00eame pour ex\u00e9cuter les tests sur diff\u00e9rentes versions de PHP.<\/p>\n<p>Par exemple, WordPress 5.6 \u00e0 5.8 utilise <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/references\/phpunit-compatibility-and-wordpress-versions\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit 5 \u00e0 7<\/a> pour tester <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/references\/php-compatibility-and-wordpress-versions\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 5.6 \u00e0 PHP 8.0<\/a>, mais \u00e0 partir de WordPress 5.9, WordPress lui-m\u00eame utilise \u00e9galement PHPUnit Polyfills pour un support plus large. WP Test Utils agit comme un pont pour surmonter toutes ces diff\u00e9rences.<\/p>\n<p>Vous voulez en savoir plus sur la fa\u00e7on d&rsquo;ex\u00e9cuter des tests d&rsquo;int\u00e9gration contre plusieurs versions diff\u00e9rentes de WordPress, y compris WordPress 5.9 et plus ? Alors <a href=\"https:\/\/make.wordpress.org\/core\/2021\/09\/27\/changes-to-the-wordpress-core-php-test-suite\/\" target=\"_blank\" rel=\"noopener noreferrer\">lisez ce qui suit sur le site web WordPress<\/a>.<\/p>\n<h3>Tests manuels<\/h3>\n<p>Maintenant que vous avez effectu\u00e9 les tests unitaires et les tests d&rsquo;int\u00e9gration et que vous avez corrig\u00e9 tous les probl\u00e8mes que vous avez trouv\u00e9s, il est temps de proc\u00e9der aux tests manuels. Votre site fonctionne et votre propre code fonctionne, mais vous utilisez \u00e9galement les plugins A, B et C. Savez-vous si ces extensions sont compatibles ?<\/p>\n<p>V\u00e9rifiez par exemple aupr\u00e8s des auteurs de l&rsquo;extension et voyez s&rsquo;ils indiquent qu&rsquo;il est compatible avec PHP 8.x. La question est alors, bien s\u00fbr, de savoir comment l&rsquo;extension a \u00e9t\u00e9 test\u00e9e. Souvent, la r\u00e9ponse est : en isolation. Les fonctions de l&rsquo;extension ont g\u00e9n\u00e9ralement \u00e9t\u00e9 test\u00e9es en conjonction avec WordPress seul, sans autres extensions actives. Et m\u00eame si d&rsquo;autres extensions ont \u00e9t\u00e9 utilis\u00e9es dans le cadre de ces tests, il y a de fortes chances que toutes les extensions que <em>vous<\/em> utilisez n&rsquo;aient pas fait partie des tests, alors prenez une telle d\u00e9claration de compatibilit\u00e9 avec des pincettes.<\/p>\n<p>Par exemple, un site WordPress avec 3 extensions (A, B, et C). Il est possible que l&rsquo;extension B, par exemple, renvoie un type de variable incorrect via un filtre, avec lequel l&rsquo;extension C, utilisant le m\u00eame filtre, veut travailler. Cela peut alors provoquer une erreur fatale car le type n&rsquo;est plus celui attendu. L&rsquo;extension C est alors consid\u00e9r\u00e9e comme la coupable du message d&rsquo;erreur, m\u00eame si l&rsquo;extension B est la v\u00e9ritable fautive.<\/p>\n<p>L&rsquo;interop\u00e9rabilit\u00e9 et l&rsquo;incompatibilit\u00e9 des extensions sont impossibles \u00e0 d\u00e9couvrir lors de tests isol\u00e9s. Plus il y a d&rsquo;extensions actives, plus il y a de chances que quelque chose se passe mal. Par exemple, il serait tr\u00e8s avantageux de faire passer les requ\u00eates de pages d&rsquo;un site web en production \u00e0 un environnement de staging (avec la journalisation des erreurs activ\u00e9e) pour d\u00e9couvrir ce qui ne va pas.<\/p>\n<p>Avec ce type de probl\u00e8me, un propri\u00e9taire de site ne verra g\u00e9n\u00e9ralement qu&rsquo;un message indiquant qu&rsquo;il y a eu une erreur avec le dernier code ex\u00e9cut\u00e9 (dans ce cas, de l&rsquo;extension C), m\u00eame si l&rsquo;extension C n&rsquo;est pas n\u00e9cessairement la cause du probl\u00e8me.<\/p>\n<p>Dans la plupart des cas, il s&rsquo;agit de beaucoup de travail manuel, humain, et une bonne quantit\u00e9 d&rsquo;huile de coude est n\u00e9cessaire pour d\u00e9tecter et corriger ces probl\u00e8mes. Cela <em>pourrait <\/em>\u00eatre automatis\u00e9 en utilisant des tests de bout en bout, mais nous ne voyons pas cela arriver souvent dans WordPress.<\/p>\n<h4>Disponibilit\u00e9 des tests pour les plugins utilis\u00e9s<\/h4>\n<p>Pour les d\u00e9veloppeurs et les \u00e9quipes de d\u00e9veloppement : Acceptez le code uniquement lorsque les tests sont disponibles. De cette fa\u00e7on, vous vous assurez que moins de tests manuels sont n\u00e9cessaires, ce qui vous fait gagner beaucoup de temps.<\/p>\n<p>Remettez en question sa strat\u00e9gie de test si vous souhaitez acheter une extension ou un th\u00e8me commercial. De cette fa\u00e7on, nous sensibilisons collectivement les d\u00e9veloppeurs\/\u00e9quipes de d\u00e9veloppement de la communaut\u00e9 WordPress pour que les tests deviennent une priorit\u00e9, et nous en b\u00e9n\u00e9ficions tous.<\/p>\n<p>Les tests sont souvent consid\u00e9r\u00e9s &#8211; injustement &#8211; comme un co\u00fbt alors qu&rsquo;en r\u00e9alit\u00e9, ils permettent d&rsquo;\u00e9conomiser de l&rsquo;argent. L&rsquo;investissement suppl\u00e9mentaire n\u00e9cessaire \u00e0 l&rsquo;\u00e9criture de tests est rentabilis\u00e9 par une r\u00e9duction significative du nombre de rapports de bogues et du temps consacr\u00e9 \u00e0 la correction des bogues. En outre, avec les tests automatis\u00e9s de logiciels, les extensions et les modifications peuvent \u00eatre effectu\u00e9es plus rapidement car les tests peuvent rapidement confirmer que la fonctionnalit\u00e9 existante continue de fonctionner.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Conseil d&rsquo;expert de Juliette<\/strong><\/p>\n<p>Lorsque vous voulez commencer \u00e0 \u00e9crire du nouveau code :<\/p>\n<ol>\n<li>Commencez par \u00e9crire ce qu&rsquo;une fonction doit faire et avec quelle logique. \u00c9crivez ceci comme un commentaire ou une s\u00e9rie de commentaires.<\/li>\n<li>\u00c9crivez les tests. Essayez de garder les cas limites \u00e0 l&rsquo;esprit \u00e9galement.<\/li>\n<li>Ensuite seulement, \u00e9crivez le code.<\/li>\n<\/ol>\n<p>De la logique originale que vous avez d\u00e9crite dans les commentaires, la moiti\u00e9 aura disparu car elle aura \u00e9t\u00e9 remplac\u00e9e par du code. Laissez le reste des commentaires, car ils peuvent vous aider \u00e0 comprendre \u00e0 nouveau la logique plus tard si vous n&rsquo;avez pas regard\u00e9 votre code depuis un moment<\/p>\n<\/aside>\n\n\n<h2>Le r\u00f4le des h\u00e9bergeurs WordPress et de PHP 8.x<\/h2>\n<p>Pour le propri\u00e9taire de site moyen, les conseils de votre h\u00e9bergeur sont hautement souhaitables. Consid\u00e9rez les points suivants :<\/p>\n<ul>\n<li>Documentation et mises \u00e0 jour pour les clients que le c\u0153ur de WordPress, les extensions, et\/ou les th\u00e8mes ne sont (dans certains cas) pas compatibles avec les versions crois\u00e9es de PHP<\/li>\n<li>Options pour les tests (comme <a href=\"https:\/\/kinsta.com\/fr\/hebergement-wordpress\/staging\/\">travailler avec un environnement de staging<\/a>)<\/li>\n<li>M\u00e9thodes pour signaler les erreurs et contacter le support<\/li>\n<\/ul>\n<p>Cela profite \u00e9galement \u00e0 un h\u00e9bergeur, car les propri\u00e9taires de sites contactent souvent l&rsquo;h\u00e9bergeur pour obtenir de l&rsquo;aide lorsque des probl\u00e8mes surviennent. Dans le cas d&rsquo;un passage \u00e0 PHP 8.0, 8.1 ou 8.2, le propri\u00e9taire du site est responsable des probl\u00e8mes potentiels, et plus le propri\u00e9taire dispose d&rsquo;informations pour se pr\u00e9parer correctement au passage, mieux c&rsquo;est.<\/p>\n<p>Mettre PHP 8.1 ou 8.2 \u00e0 la disposition des clients en tant qu&rsquo;h\u00e9bergeur web est une chose, mais ce faisant, ils doivent s&rsquo;assurer de sensibiliser les clients afin qu&rsquo;ils soient conscients que des probl\u00e8mes pourraient survenir. Il est recommand\u00e9 de tester votre site dans un environnement de staging avec une version diff\u00e9rente de celle en direct. (La s\u00e9lection des versions PHP est <a href=\"https:\/\/kinsta.com\/fr\/changelog\/php-8\/\">disponible par d\u00e9faut chez Kinsta<\/a>.)<\/p>\n<h2>Version PHP minimale pour WordPress<\/h2>\n<p>Plus de 15 % de tous les sites web utilisent actuellement la version 7.0 ou inf\u00e9rieure de PHP. Cela peut \u00eatre constat\u00e9 dans les <a href=\"https:\/\/wordpress.org\/about\/stats\/\" target=\"_blank\" rel=\"noopener noreferrer\">statistiques officielles de WordPress<\/a>. Environ 83 % de tous les sites WordPress utilisent actuellement la version 7.4 ou inf\u00e9rieure de PHP. Veuillez noter que tout ce qui est inf\u00e9rieur ou \u00e9gal \u00e0 la version 8.0 <a href=\"https:\/\/www.php.net\/supported-versions\">n&rsquo;est actuellement plus pris en charge par PHP<\/a>. L&rsquo;utilisation de versions de PHP en fin de vie peut entra\u00eener des probl\u00e8mes car les mises \u00e0 jour de s\u00e9curit\u00e9 ne sont plus publi\u00e9es.<\/p>\n<p>Pour \u00e9viter les probl\u00e8mes, il est important que les propri\u00e9taires de sites WordPress soient inform\u00e9s de la version minimale de PHP qui permettra \u00e0 leur site de fonctionner en toute s\u00e9curit\u00e9. De leur c\u00f4t\u00e9, les propri\u00e9taires de sites peuvent modifier eux-m\u00eames la version PHP\u00a0(<a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-mettre-a-jour-php-dans-wordpress\/\">possible chez Kinsta pour tous les packs<\/a>) ou demander \u00e0 leur h\u00e9bergeur de mettre \u00e0 jour le site vers une version PHP plus r\u00e9cente. Dans les cas extr\u00eames, vous pouvez passer \u00e0 un h\u00e9bergeur qui prend en charge ces versions plus r\u00e9centes.<\/p>\n<p>\u00c9tant donn\u00e9 que WordPress ne requiert qu&rsquo;une <a href=\"https:\/\/wordpress.org\/about\/requirements\/\" target=\"_blank\" rel=\"noopener noreferrer\">version minimale de 7.4<\/a>, de nombreux h\u00e9bergeurs et propri\u00e9taires de sites web ne sont pas suffisamment motiv\u00e9s pour mettre \u00e0 jour leurs sites. Et ce, malgr\u00e9 le fait que PHP 7.4 a atteint sa fin de vie en <a href=\"https:\/\/www.php.net\/eol.php\" target=\"_blank\" rel=\"noopener noreferrer\">novembre 2022<\/a>.<\/p>\n<p>Si WordPress augmente un jour la version minimale de PHP, cela pourrait signifier que de nombreux sites ne seront plus compatibles avec une mise \u00e0 jour de la derni\u00e8re version de WordPress. Toutefois, les mises \u00e0 jour de s\u00e9curit\u00e9 continueront \u00e0 \u00eatre publi\u00e9es pour ces versions obsol\u00e8tes pendant un certain temps.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Pour passer \u00e0 PHP 8.0 ou plus pour votre site web, il y a plusieurs \u00e9tapes que vous, ou votre d\u00e9veloppeur, devez effectuer. Les \u00e9tapes importantes sont les suivantes :<\/p>\n<ul>\n<li>Analyse statique<\/li>\n<li>Tests unitaires<\/li>\n<li>Tests d&rsquo;int\u00e9gration<\/li>\n<li>Tests manuels<\/li>\n<\/ul>\n<p>Lorsque vous passez \u00e0 PHP 8.x, assurez-vous que <em>tout<\/em> a \u00e9t\u00e9 correctement test\u00e9. C&rsquo;est la seule fa\u00e7on de garantir que votre site fonctionnera correctement, rapidement et en toute s\u00e9curit\u00e9 sur une version PHP plus r\u00e9cente.<\/p>\n<p>Nous remercions infiniment Juliette pour sa participation \u00e0 cet article et pour tout son travail sur les outils mentionn\u00e9s !<\/p>\n<p><em>Photo de Juliette, prise par Jip Moors et utilis\u00e9e avec permission.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mettre \u00e0 niveau un site, une extension ou un th\u00e8me WordPress vers une nouvelle version de PHP est une t\u00e2che qui revient r\u00e9guli\u00e8rement. Mais comment faire &#8230;<\/p>\n","protected":false},"author":139,"featured_media":66998,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[987,1000],"class_list":["post-66997","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-apprendre-php","topic-mises-a-jour-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Passer \u00e0 PHP 8.x en quatre \u00e9tapes - Un entretien avec Juliette Reinders Folmer - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Apprenez ce qu&#039;implique une transition en douceur vers PHP 8.x pour votre site, extension ou th\u00e8me WordPress, y compris une feuille de route.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Passer \u00e0 PHP 8.x en quatre \u00e9tapes - Un entretien avec Juliette Reinders Folmer\" \/>\n<meta property=\"og:description\" content=\"Apprenez ce qu&#039;implique une transition en douceur vers PHP 8.x pour votre site, extension ou th\u00e8me WordPress, y compris une feuille de route.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-07T10:39:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-22T08:58:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Marcel Bootsman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Apprenez ce qu&#039;implique une transition en douceur vers PHP 8.x pour votre site, extension ou th\u00e8me WordPress, y compris une feuille de route.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcel Bootsman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/\"},\"author\":{\"name\":\"Marcel Bootsman\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7\"},\"headline\":\"Passer \u00e0 PHP 8.x en quatre \u00e9tapes &#8211; Un entretien avec Juliette Reinders Folmer\",\"datePublished\":\"2023-03-07T10:39:39+00:00\",\"dateModified\":\"2023-08-22T08:58:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/\"},\"wordCount\":4632,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/\",\"name\":\"Passer \u00e0 PHP 8.x en quatre \u00e9tapes - Un entretien avec Juliette Reinders Folmer - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"datePublished\":\"2023-03-07T10:39:39+00:00\",\"dateModified\":\"2023-08-22T08:58:38+00:00\",\"description\":\"Apprenez ce qu'implique une transition en douceur vers PHP 8.x pour votre site, extension ou th\u00e8me WordPress, y compris une feuille de route.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mises \u00e0 jour PHP\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/mises-a-jour-php\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Passer \u00e0 PHP 8.x en quatre \u00e9tapes &#8211; Un entretien avec Juliette Reinders Folmer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7\",\"name\":\"Marcel Bootsman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g\",\"caption\":\"Marcel Bootsman\"},\"description\":\"Partnerships &amp; Community Manager EMEA. Je kan me bereiken via Linkedin.\",\"sameAs\":[\"https:\/\/kinsta.com\/nl\/\",\"https:\/\/www.linkedin.com\/in\/marcelbootsman\/\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/marcelbootsman\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Passer \u00e0 PHP 8.x en quatre \u00e9tapes - Un entretien avec Juliette Reinders Folmer - Kinsta\u00ae","description":"Apprenez ce qu'implique une transition en douceur vers PHP 8.x pour votre site, extension ou th\u00e8me WordPress, y compris une feuille de route.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/","og_locale":"fr_FR","og_type":"article","og_title":"Passer \u00e0 PHP 8.x en quatre \u00e9tapes - Un entretien avec Juliette Reinders Folmer","og_description":"Apprenez ce qu'implique une transition en douceur vers PHP 8.x pour votre site, extension ou th\u00e8me WordPress, y compris une feuille de route.","og_url":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-03-07T10:39:39+00:00","article_modified_time":"2023-08-22T08:58:38+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png","type":"image\/png"}],"author":"Marcel Bootsman","twitter_card":"summary_large_image","twitter_description":"Apprenez ce qu'implique une transition en douceur vers PHP 8.x pour votre site, extension ou th\u00e8me WordPress, y compris une feuille de route.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Marcel Bootsman","Dur\u00e9e de lecture estim\u00e9e":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/"},"author":{"name":"Marcel Bootsman","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7"},"headline":"Passer \u00e0 PHP 8.x en quatre \u00e9tapes &#8211; Un entretien avec Juliette Reinders Folmer","datePublished":"2023-03-07T10:39:39+00:00","dateModified":"2023-08-22T08:58:38+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/"},"wordCount":4632,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/","url":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/","name":"Passer \u00e0 PHP 8.x en quatre \u00e9tapes - Un entretien avec Juliette Reinders Folmer - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png","datePublished":"2023-03-07T10:39:39+00:00","dateModified":"2023-08-22T08:58:38+00:00","description":"Apprenez ce qu'implique une transition en douceur vers PHP 8.x pour votre site, extension ou th\u00e8me WordPress, y compris une feuille de route.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/03\/Juliette_Reinders_Folmer_image.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/passer-a-php-8\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Mises \u00e0 jour PHP","item":"https:\/\/kinsta.com\/fr\/sujets\/mises-a-jour-php\/"},{"@type":"ListItem","position":3,"name":"Passer \u00e0 PHP 8.x en quatre \u00e9tapes &#8211; Un entretien avec Juliette Reinders Folmer"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7","name":"Marcel Bootsman","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g","caption":"Marcel Bootsman"},"description":"Partnerships &amp; Community Manager EMEA. Je kan me bereiken via Linkedin.","sameAs":["https:\/\/kinsta.com\/nl\/","https:\/\/www.linkedin.com\/in\/marcelbootsman\/"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/marcelbootsman\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/66997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/139"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=66997"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/66997\/revisions"}],"predecessor-version":[{"id":69723,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/66997\/revisions\/69723"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/en"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/nl"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/translations\/dk"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/66997\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/66998"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=66997"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=66997"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=66997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}