


Correction des erreurs PHP_CodeSniffer Null Trim() dans les normes de codage WordPress
Oct 16, 2024 am 06:11 AMLorsque vous travaillez sur des projets WordPress avec PHP 8.x, vous pouvez rencontrer l'erreur suivante?:
Erreur fatale?: PHP_CodeSnifferExceptionsRuntimeException?: trim()?: le passage de null au paramètre n°1 ($string) de type cha?ne est obsolète dans /path/...
Cette erreur se produit en raison d'un avertissement de dépréciation dans PHP 8.x, où passer null à la fonction trim() n'est plus autorisé. Plus précisément, ce problème survient dans le cadre d'un reniflage des normes de codage WordPress (WPCS), qui fait partie de la configuration de PHP_CodeSniffer. à la date d’écriture de ces lignes, même avec les dernières versions de PHP_CodeSniffer et WordPress Coding Standards, ce problème persiste.
Comprendre PHP_CodeSniffer et WPCS
PHP_CodeSniffer est un outil qui aide les développeurs à maintenir les normes de codage en vérifiant leur code PHP pour détecter toute violation des règles spécifiées. Les normes de codage WordPress (WPCS) fournissent un ensemble de directives pour écrire du code cohérent et propre dans les projets WordPress. L'erreur mentionnée ci-dessus indique généralement qu'un extrait de code n'adhère pas à ces normes en raison de changements dans le comportement de PHP.
Fixation
Pour résoudre ce problème, nous pouvons modifier manuellement le fichier à l'origine du problème, localiser la ligne où trim() est appelé et mettre à jour le code pour garantir que les valeurs nulles sont correctement traitées lors de l'appel de trim().
Par exemple, dans le fichier vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php, localisez la ligne 280 et remplacez la ligne suivante?:
// this $cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' ); // to this $cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) );
Cependant, comme dans de nombreuses décisions en matière de développement logiciel, Ce n'est pas parce que vous pouvez le faire que vous devriez le faire.
Bien que l'approche précédente puisse corriger l'erreur, il est important de se rappeler que la modification des fichiers des fournisseurs n'est pas une solution durable. Les modifications seront perdues à chaque fois que vous mettrez à jour vos dépendances via Composer.
Une meilleure approche consiste donc à créer un fichier de correctif.
Création d'un fichier de correctif
Voici un guide étape par étape sur la fa?on de créer et d'appliquer un correctif pour le problème
Créer le fichier de correctif
Une solution plus robuste consiste à créer un fichier de correctif. Cette méthode vous permet d'appliquer automatiquement vos modifications à chaque fois que vous installez ou mettez à jour vos dépendances.
Un fichier de correctif est un fichier texte qui contient les différences entre deux versions d'un fichier, essentiellement un instantané ? avant ? et ? après ?.
Dans le répertoire de votre projet, créez un dossier pour contenir le fichier de correctif?:
mkdir -p correctifs
Dans le dossier patches/, créez un nouveau fichier de correctif appelé fix-null-trim.patch. Vous pouvez le faire avec votre éditeur de texte?:
touchez patches/fix-null-trim.patch
Ouvrez fix-null-trim.patch dans votre éditeur de texte et ajoutez le contenu suivant?:
--- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php +++ b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php @@ -280,7 +280,7 @@ // Original code with `trim()` // Update this line: - $cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' ) ); + $cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) ); --- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/WP/I18nSniff.php +++ b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/WP/I18nSniff.php @@ -194,7 +194,7 @@ // Original code with `trim()` // Update this line: - $cl_text_domain = trim( PHPCSHelper::get_config_data( 'text_domain' ) ); + $cl_text_domain = is_null(PHPCSHelper::get_config_data( 'text_domain' )) ? '' : trim( PHPCSHelper::get_config_data( 'text_domain' ) ); --- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/Sniff.php +++ b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/Sniff.php @@ -1144,7 +1144,7 @@ // Original code with `trim()` // Update this line: - $cl_supported_version = trim( PHPCSHelper::get_config_data( 'minimum_supported_wp_version' ) ); + $cl_supported_version = is_null(PHPCSHelper::get_config_data( 'minimum_supported_wp_version' )) ? '' : trim( PHPCSHelper::get_config_data( 'minimum_supported_wp_version' ) );
Ce correctif indique à Composer de remplacer la ligne problématique dans PrefixAllGlobalsSniff.php par une version plus s?re qui utilise l'opérateur de fusion nul (??) pour éviter de transmettre null à trim().
Modifiez composer.json pour appliquer le correctif
Ensuite, vous devez demander à Composer d'appliquer ce correctif automatiquement chaque fois que vous installez ou mettez à jour vos dépendances.
Ouvrez le fichier composer.json de votre projet. Ajoutez la configuration suivante dans la section "extra". Si la rubrique "extra" n'existe pas déjà, vous devrez la créer.
json "extra": { "patches": { "wp-coding-standards/wpcs": { "Fix null trim() issue": "patches/fix-null-trim.patch" } } }
Cela indique à Composer d'appliquer le fichier fix-null-trim.patch au package wp-coding-standards/wpcs lorsqu'il installe ou met à jour les dépendances.
Installez le plugin Composer Patch
Pour appliquer des correctifs via Composer, vous avez besoin du plugin composer-patches. Exécutez la commande suivante pour installer?:
le compositeur nécessite des cweagans/composer-patches
Appliquer le patch
Maintenant, vous pouvez appliquer le patch en exécutant la commande suivante?:
installation du compositeur
Lors de l'installation, Composer appliquera le patch du dossier patches/ au fichier PrefixAllGlobalsSniff.php.
En créant et en appliquant un fichier de correctif, vous vous assurez que vos correctifs persistent dans les mises à jour de Composer, en respectant les meilleures pratiques en matière de développement logiciel. Surveillez régulièrement les mises à jour de PHP_CodeSniffer et des normes de codage WordPress, car ces problèmes pourraient être résolus dans les versions futures. Cette approche proactive améliore non seulement la qualité du code, mais améliore également votre flux de travail de développement dans les environnements PHP 8.x.
J'ai partagé le fichier de correctif dans ce Gist. N'hésitez pas à l'utiliser comme référence pour implémenter des correctifs similaires dans vos projets !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les problèmes et les solutions courants pour la portée de la variable PHP incluent: 1. La variable globale ne peut pas être accessible dans la fonction, et elle doit être transmise en utilisant le mot-clé ou le paramètre global; 2. La variable statique est déclarée avec statique, et elle n'est initialisée qu'une seule fois et la valeur est maintenue entre plusieurs appels; 3. Des variables hyperglobales telles que $ _get et $ _post peuvent être utilisées directement dans n'importe quelle portée, mais vous devez faire attention au filtrage s?r; 4. Les fonctions anonymes doivent introduire des variables de portée parents via le mot clé Utiliser, et lorsque vous modifiez les variables externes, vous devez passer une référence. La ma?trise de ces règles peut aider à éviter les erreurs et à améliorer la stabilité du code.

Pour gérer en toute sécurité les téléchargements de fichiers PHP, vous devez vérifier la source et taper, contr?ler le nom et le chemin du fichier, définir les restrictions du serveur et traiter les fichiers multimédias deux fois. 1. Vérifiez la source de téléchargement pour empêcher le CSRF via le jeton et détecter le type de mime réel via FINFO_FILE en utilisant le contr?le de liste blanche; 2. Renommez le fichier à une cha?ne aléatoire et déterminez l'extension pour la stocker dans un répertoire non Web en fonction du type de détection; 3. La configuration PHP limite la taille de téléchargement et le répertoire temporaire Nginx / Apache interdit l'accès au répertoire de téléchargement; 4. La bibliothèque GD résait les images pour effacer des données malveillantes potentielles.

Il existe trois méthodes courantes pour le code de commentaire PHP: 1. Utiliser // ou # pour bloquer une ligne de code, et il est recommandé d'utiliser //; 2. Utiliser /.../ pour envelopper des blocs de code avec plusieurs lignes, qui ne peuvent pas être imbriquées mais peuvent être croisées; 3. Compétences combinées Commentaires tels que l'utilisation / if () {} / pour contr?ler les blocs logiques, ou pour améliorer l'efficacité avec les touches de raccourci de l'éditeur, vous devez prêter attention aux symboles de fermeture et éviter les nidification lorsque vous les utilisez.

AgeneratorInphpisamemory-EfficientwaytoterateOrgedatasetsByyieldingValuesonEatatimeIntedofreturningThemallAtonce.1.GeneratorsUsEtheieldKeywordToproduceValuesondemand, ReducingMemoryUsage.2.TheyAreusefulForHandlingBigloops, ReadingLargeFiles, OR OR.

La clé pour rédiger des commentaires PHP est de clarifier l'objectif et les spécifications. Les commentaires devraient expliquer "pourquoi" plut?t que "ce qui a été fait", en évitant la redondance ou trop de simplicité. 1. Utilisez un format unifié, tel que DocBlock (/ * /) pour les descriptions de classe et de méthode afin d'améliorer la lisibilité et la compatibilité des outils; 2. Soulignez les raisons de la logique, telles que pourquoi les sauts JS doivent être sortis manuellement; 3. Ajoutez une description d'une vue d'ensemble avant le code complexe, décrivez le processus dans les étapes et aidez à comprendre l'idée globale; 4. Utilisez TODO et FIXME Rationalement pour marquer des éléments et des problèmes de taches pour faciliter le suivi et la collaboration ultérieurs. De bonnes annotations peuvent réduire les co?ts de communication et améliorer l'efficacité de la maintenance du code.

Toléarnphpeffective, startBySettingUpAlocalServerERironmentUsingToolsLILYXAMPPANDACODEDITERLIGHILLEVSCODE.1) INSTRUSITIONXAMPFORAPACHE, MYSQL, ANDPHP.2) USACODEDEDITORFORSYNTAXSUPPORT.3)

En PHP, vous pouvez utiliser des crochets ou des accolades bouclées pour obtenir des caractères d'index spécifiques à la cha?ne, mais les crochets sont recommandés; L'index commence à partir de 0 et l'accès à l'extérieur de la plage renvoie une valeur nulle et ne peut pas se voir attribuer une valeur; MB_substr est nécessaire pour gérer les caractères multi-octets. Par exemple: $ str = "Hello"; echo $ str [0]; sortie h; et les caractères chinois tels que MB_substr ($ str, 1,1) doivent obtenir le résultat correct; Dans les applications réelles, la longueur de la cha?ne doit être vérifiée avant le boucle, les cha?nes dynamiques doivent être vérifiées pour la validité et les projets multilingues recommandent d'utiliser des fonctions de sécurité multi-octets uniformément.

Toinstallphpquickly, usexAmpPonWindowsorHomebrewonMacos.1.onwindows, downloadAndInstallxAmppp, selectComponents, startapache et placefilesInhtdocs.2.
