Comment tester la compatibilité PHP des produits WordPress

Pourquoi il est important de conna?tre la compatibilité des versions de PHP, où trouver des informations sur les mises à jour des versions de PHP, et comment tester vos plugins et thèmes pour voir s'ils supportent la dernière version de PHP de deux fa?ons.

Pourquoi dois-je tester la compatibilité des versions de PHP ?

Image[1] - Comment tester la compatibilité des produits WordPress avec PHP - Photon Flux | Service professionnel de réparation de WordPress, dans le monde entier, réponse rapide !


WordPress est écrit en langage PHP, ce qui signifie qu'il doit fonctionner correctement avec une version de PHP prise en charge par votre hébergeur. Bien que WordPress recommande une version minimale de PHP, les anciennes versions de PHP cessent progressivement d'être mises à jour ou même de fournir des correctifs de sécurité.

Par exemple, la version minimale recommandée de PHP pour WordPress est actuellement la 7.4, mais cette version n'est plus mise à jour depuis le 28 novembre 2022.

Le code principal de WordPress fonctionne avec PHP 8.0 et PHP 8.1 et prend également en charge les versions PHP 8.2 et PHP 8.3. Cependant, tous les plugins ne sont pas garantis pour fonctionner correctement sur ces nouvelles versions de PHP.

Par conséquent, si vous êtes un développeur de plugins, il est très important de vérifier régulièrement la compatibilité de votre plugin avec les différentes versions de PHP.

Où trouver des informations sur les changements de version de PHP

Pour savoir quand et comment les versions de PHP changent, il est préférable de visiter le site officiel de PHP à l'adresse https://www.php.net/.

existent"Versions prises en charge"vous trouverez des informations sur les versions actuellement prises en charge, le niveau de prise en charge et les versions abandonnées.

A ce jour, toutes les versions de PHP 7.x sont en fin de vie, et PHP 8.0 ne supporte que les correctifs de sécurité et supporte activement PHP 8.1 ainsi que PHP 8.2 et 8.3, ce qui signifie que les bogues et les failles de sécurité seront corrigés. Veuillez noter que PHP 8.0 ne supporte que les correctifs de sécurité jusqu'en novembre 2023, à peu près au moment de la sortie de PHP 8.3, après quoi PHP 8.0 sera considéré comme étant en fin de vie.

Dans la section Appendix de la documentation PHP, vous pouvez trouver un guide pour migrer depuis les anciennes versions de PHP, qui liste les changements les plus importants entre l'ancienne et la nouvelle version. Ce guide énumère les changements les plus importants entre les anciennes et les nouvelles versions.Migrer de PHP 7.4.x à PHP 8.0.xLe guide liste les changements les plus importants entre PHP 7.4 et PHP 8.0.

Image [2] - Comment tester la compatibilité des produits WordPress avec PHP - Photon Flux | Professional WordPress Repair Service, Global Reach, Fast Response

Exemples de plug-ins

<?php
/**
 * Plugin Name: WP Learn Compatibility
 * Description: Learn to test a plugin for PHP Version Compatibility
 * Version: 1.0.1
 *
 * @package wp-learn-compatibility
 */

/**
 * Posts fetcher class
 */
class Post_Fetcher {

    /**
     * Array posts
     *
     * @var array
     */
    protected $posts;

    /**
     * Fetch the WordPress posts
     */
    public function post_fetcher() {
        $this->posts = get_posts() ;
    }

    /**
     * Récupère les posts et renvoie le HTML formaté
     * @return string
     * @return string
     */
    public function fetch_posts() {
        $post_html = '<div class="post">' ;
        foreach ( $this-&gt;posts as $post ) {
            if ( property_exists( $post, 'post_title' ) ) {
                $post_html . = sprintf(
                    '<h4><a href="/fr/%s/">%s</a></h4>',
                    get_permalink( $post-&gt;ID ),
                    $post-&gt;post_title
                ) ;
            }
        }
        $post_html . = '</div>' ;
        return $post_html.
    }
}

add_shortcode('wp_learn_php_compatibility', 'wp_learn_php_compatibility_shortcode_render' ) ;

/**
 * Fonction de rappel pour le shortcode wp_learn_php_compatibility
 shortcode shortcode_render' ) ; /** * @return string
 * @return string
 */
function wp_learn_php_compatibility_shortcode_render() {
    $post_fetcher = new post_fetcher() ;
    $post_html = $post_fetcher-&gt;fetch_posts() ;
    return $post_html ;
}

Dans ce tutoriel, nous allons étudier un exemple de plugin. Ce plugin crée un shortcode spécial qui, lorsque vous l'utilisez sur une page, affiche une liste d'articles, y compris le titre de chaque article. Un code court appelépost_fetcherest responsable de l'obtention de ces informations sur les postes.

Lorsque vous testez ce shortcode sur un serveur avec la version PHP 7.4, vous pouvez constater qu'il fonctionne correctement, affichant la liste des articles comme nous l'attendons.

Image [3] - Comment tester la compatibilité des produits WordPress avec PHP - Photon Flux | Service professionnel de réparation de WordPress, dans le monde entier, réponse rapide !

Comment tester la compatibilité des versions de PHP

Pour vérifier la compatibilité des versions de PHP, il existe plusieurs méthodes de test, qui peuvent impliquer l'utilisation de différentes versions de PHP et d'outils spéciaux. Dans ce tutoriel, nous allons présenter deux méthodes de test et explorer les avantages et les inconvénients possibles de chacune d'entre elles.

Test de compatibilité manuel

La méthode de test manuel nécessite que vous configuriez la version de PHP que vous souhaitez tester dans votre environnement WordPress, puis que vous testiez votre plugin dans cet environnement.

Il existe plusieurs fa?ons de mettre en place un tel environnement, la plus courante étant d'utiliser un outil de développement local qui permet de passer facilement d'une version de PHP à l'autre, comme Mamp, Laragon, LocalWP ou DevKinsta.

Dans ce tutoriel, par exemple, nous choisirons la version 8.1 de PHP pour les tests.

Pour confirmer rapidement la version de PHP utilisée par votre WordPress, vous pouvez créer un fichier appelé info.php dans votre répertoire d'installation de WordPress et le remplir avec un morceau de code spécifique.

<?php
phpinfo() ;

Ensuite, naviguez vers le fichier info.php dans votre navigateur et vous devriez voir la version PHP s'afficher.

Après avoir mis en place votre environnement de test, vous devez activer le débogage de WordPress.

Pour ce faire, modifiez le fichierwp-config.phpet mettre à jour les lignes définissant les constantesWP_DEBUG, le régler survrai

define( 'WP_DEBUG', true ) ;

Ajoutez égalementWP_DEBUG_DISPLAYet lui attribuer la valeur false, puis ajouter la constanteWP_DEBUG_LOGet lui attribuer la valeur true pour enregistrer les erreurs dans le répertoiredebug.logdans le documentwp-content.

define('WP_DEBUG_DISPLAY', false ) ;
define('WP_DEBUG_LOG', true ) ;

Vous pouvez égalementWP_DEBUG_LOGDéfinissez les constantes à un emplacement personnalisé en spécifiant le chemin d'accès au fichier. Exemple :

define('WP_DEBUG_LOG', '/home/ubuntu/wp-local-env/sites/learnpress/logs/debug.' . date( 'Y-m-d' ) . '.log' ) ;

Ensuite, testez votre plugin en actualisant la page. Veuillez noter que la fonctionnalité du shortcode est cassée.

Si vous regardez le fichier debug.log, vous verrez l'erreur suivante s'afficher :

[24-Nov-2023 12:59:49 UTC] PHP Warning : foreach() argument must be of type array|object, null given in /home/ubuntu/wp-local-env/sites/learnpress /wp-content/plugins/wp-learn-php-compatibility/wp-learn-php-compatibility.php sur la ligne 36

Maintenant, si vous allez à la ligne 36 du fichier du plugin, vous verrez le code suivant, et vous verrez qu'il essaie de faire une boucle à travers cela$this->postsqui est nul pour une raison quelconque. la raison n'est peut-être pas évidente, vous pouvez donc vouloir creuser plus profondément dans l'attributMigrer de PHP 7.4.x à PHP 8.0.xGuide.

Dans la section Changements incompatibles avec le passé, vous verrez les changements suivants :

Les méthodes portant le même nom que la classe ne sont plus interprétées comme des constructeurs. La méthode __construct() doit être utilisée à la place.

Dans ce cas, la méthode du constructeur de notre classe doit être mise à jour.

Après la correction, rafra?chissez la page et vous verrez que le plugin fonctionne à nouveau comme prévu.

Bien que les tests manuels fonctionnent, ils peuvent s'avérer fastidieux. Heureusement, vous pouvez aussi automatiser la plupart des tests en utilisant un outil appelé PHPUnit. Cela vous permettra de protéger continuellement votre code contre les bogues et les problèmes de compatibilité avec PHP, mais cela dépasse le cadre de ce tutoriel.

Image [4] - Comment tester la compatibilité des produits WordPress avec PHP - Photonflux.com | Service professionnel de réparation de WordPress, dans le monde entier, réponse rapide !

Analyse de votre code avec PHPCompatibilityWP

Vous pouvez également utiliser un certain nombre d'outils pour tester la compatibilité de PHP, le plus utile étant le bien nomméL'outil PHPCompatibilité, qui estPHP_CodeSnifferUn ensemble de règles pour les outils.

PHP_CodeSniffer est un outil en ligne de commande qui peut être utilisé pour rechercher des erreurs et des avertissements dans le code, tandis que l'outil PHPCompatibility est un ensemble de règles qui peuvent être utilisées avec PHP_CodeSniffer pour vérifier la compatibilité du code avec la version de PHP.

Pour les développeurs WordPress, il existe une nouvelle fonctionnalité appeléePHPCompatibilitéWPqui est un jeu de règles spécifique pour le projet WordPress PHPCompatibility ruleset.

La beauté de PHPCompatibility/PHPCompatibilityWP est que vous n'avez pas besoin de configurer une version différente de PHP pour l'utiliser. Vous pouvez l'utiliser avec une version existante de PHP et il vérifiera votre code par rapport aux règles de la version de PHP que vous spécifiez.

Pour installer et utiliser PHPCompatibilityWP, vous devez installer Composer, qui est un gestionnaire de dépendances pour les projets PHP.

Pour que Composer fonctionne, vous devez également avoir installé PHP sur votre ordinateur afin de pouvoir utiliser le binaire PHP CLI, qui vous permet d'exécuter des scripts PHP dans le terminal, et pas seulement dans votre navigateur.

L'installation de Composer dépasse le cadre de ce cours, mais vous pouvez la trouver dans la rubriqueSite web du compositeurDécouvrez ce qui s'applique auxmacOS/Linuxrépondre en chantantWindows (ordinateur)Description du système d'exploitation.

Vous trouverez une liste de tous les sites PHP dans la page d'accueil du site PHP.Pour savoir comment installer PHP sur votre système, consultez la section "Installation et configuration".

Après avoir installé PHP, assurez-vous d'ajouter le chemin d'accès au binaire de l'interface de programmation PHP au chemin d'accès du système d'exploitation de votre ordinateur afin de pouvoir exécuter des commandes PHP à partir de n'importe quel endroit de votre ordinateur.

Vous pouvez vérifier si PHP est installé en exécutant la commande suivante dans un terminal :

php -v

De même, vous pouvez vérifier si Composer est installé en exécutant la commande suivante dans un terminal :

compositeur -V

Après avoir installé Composer, vous pouvez initialiser le projet Composer en lan?ant la commande suivante dans le répertoire du plugin. Si vous utilisez déjà Composer dans un plugin, vous pouvez sauter cette étape.

composer init

Ceci initialisera un nouveau projet Composer dans votre répertoire de plugins. Vous pouvez accepter les valeurs par défaut pour la plupart des questions, mais lorsqu'il vous est demandé de définir les dépendances de manière interactive (require) et de définir vos dépendances de développement de manière interactive (require-dev) ? vous devez répondre "Non". Vous pouvez également ignorer le mappage autoload de PSR-4.

Une fois cette opération effectuée, vous disposerez d'uncomposer.jsonqui est utilisé par Composer pour gérer les dépendances du projet.

Ensuite, vous devez installer le plugin Composer et gérer les paramètres du chemin d'installation de PHP_CodeSniffer en exécutant la commande suivante à partir de la commande. Si ce plugin est déjà installé, vous pouvez l'ignorer.

composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true

Vous pouvez ensuite installer le plug-in d'installation Composer et l'outil PHPCompatibilityWP en exécutant la commande suivante :

composer require --dev dealerdirect/phpcodesniffer-composer-installer : "^1.0"
composer require --dev phpcompatibility/phpcompatibility-wp : "*"

Cela permet de mettre en place et d'installer les dépendances nécessaires dans votre fichier composer.json.

Image [5] - Comment tester la compatibilité des produits WordPress avec PHP - Photon Fluctuation Network | Professional WordPress Repair Service, Global Reach, Fast Response

Notes sur les versions de PHPCompatibility et PHPCompatibilityWP.

Actuellement, la version stable de PHPCompatibility est9.3.5Reniflements récentsfait partie de la prochaine version 10.0.0. Version. La version stable actuelle de PHPCompatibilityWP est la suivante2.1.4

Lorsque la version 10.0 de PHPCompatibility sera publiée, la version 3.0 de PHPCompatibilityWP sera également publiée et dépendra de la version 10.0 de PHPCompatibility.

En attendant, vous pouvez installer la branche dev-develop de PHPCompatibility pour exécuter PHPCS et ajouter la pointe du sniffing PHP 8 avant la sortie de la version 10.0.0 de PHPCompatibility, dont les détails peuvent être trouvés ici.Documentation VIP de WordPress.

Pour ce faire, exécutez la commande suivante pour spécifier un alias pour la branche dev-develop de PHPCompatibility :

composer config minimum-stability dev
composer require --dev phpcompatibility/phpcompatibility-wp : "^2.1"
composer require --dev phpcompatibility/php-compatibility : "dev-develop as 9.99.99"

Ces commandes définissent ledévelopperLa branche PHPCompatibility s'aligne sur la version 9.x dans la plage autorisée par PHPCompatibility et configure PHPCompatibilityWP pour qu'il installe la dernière version stable 2.1.

Lorsque PHPCompatibility 10 et PHPCompatibilityWP 3 seront disponibles, il devrait être possible de mettre à jour la contrainte de version de PHPCompatibilityWP à "^3.0", qui dépendra de la version 10 de PHPCompatibility. Cela dépendra de la version 10 de PHPCompatibility.

Après avoir installé tous ces éléments, vous pouvez lancer l'outil PHPCompatibilityWP sur le fichier du plugin.

L'approche recommandée est d'exécuter PHPCompatibilityWP pour une version de base spécifique de PHP. Dans cet exemple, vous pouvez le faire en rempla?ant le fichiertestVersionLes variables d'exécution sont définies pour PHP 7.4 et plus.7.4-.

. /vendor/bin/phpcs --runtime-set testVersion 7.4- -p wp-learn-php-compatibility.php --standard=PHPCompatibilityWP

Vous obtiendrez le résultat suivant :

W 1 / 1 (100%)



FICHIER : /Users/jonathanbossenger/wp-local-env/sites/learnpress/wp-content/plugins/wp-learn-php-compatibility/wp-learn-php- compatibilité.php
---------------------------------------------------------------------------------------------------------------------------------- -------
A TROUVé 0 ERREUR ET 1 AVERTISSEMENT AFFECTANT 1 LIGNE
---------------------------------------------------------------------------------------------------------------------------------- -------
 15 | AVERTISSEMENT | L'utilisation du constructeur de classe PHP4 n'est plus supportée depuis PHP 7.
---------------------------------------------------------------------------------------------------------------------------------- -------

Temps : 33ms ; Mémoire : 8MB

Remarquez que la même erreur est signalée que dans la méthode manuelle, mais cette fois-ci, elle est plus spécifique. Elle nous indique exactement la ligne sur laquelle l'erreur s'est produite et la nature de l'erreur.

Nous pouvons maintenant corriger l'erreur du constructeur de la classe.

mise en garde

L'une des considérations à prendre en compte lors de l'utilisation d'un outil tel que PHPCompatibilityWP est qu'il ne peut pas détecter toutes les erreurs de compatibilité.

Par exemple, l'un des autres changements entre PHP 7.4 et PHP 8.0 est la suppression de la fonctionnalité utilisée avec l'objetarray_key_exists()Au lieu de cela, c'estpropriété_existe()Une fonction similaire devrait être utilisée.

Cependant, l'outil PHPCompatibilityWP ne conna?t pas les variables que vous passez à la fonctionarray_key_exists()est un tableau ou un objet, il ne peut donc pas l'indiquer.

C'est là que les tests manuels automatisés peuvent s'avérer utiles. Lorsque vous exécutez un test dans un nouvel environnement PHP, le test échouera, vous exposant ainsi à d'éventuels problèmes. Lorsque la journalisation est activée, les erreurs sont consignées dans le fichier journal.

En fin de compte, la combinaison d'un outil comme PHPCompatibility avec les processus de tests automatisés et manuels dont nous avons parlé vous permettra de vous assurer que votre plugin est compatible avec les versions actuelles et futures de PHP.


Contactez nous
Vous n'arrivez pas à lire le tutoriel ? Contactez-nous pour une réponse gratuite ! Aide gratuite pour les sites personnels et les sites de petites entreprises !
Service clientèle WeChat
Service clientèle WeChat
Tel : 020-2206-9892
QQ咨詢:1025174874
(iii) Courriel : info@361sale.com
Horaires de travail : du lundi au vendredi, de 9h30 à 18h30, jours fériés.
? Déclaration de reproduction
Cet article a été rédigé par Harry
LA FIN
Si vous l'aimez, soutenez-le.
félicitations0 partager (joies, avantages, privilèges, etc.) avec les autres
commentaires achat de canapé

Veuillez vous connecter pour poster un commentaire

    Pas de commentaires