Behebung von PHP_CodeSniffer Null Trim()-Fehlern in WordPress-Codierungsstandards

Susan Sarandon
Freigeben: 2024-10-16 06:11:30
Original
551 Leute haben es durchsucht

Beim Arbeiten an WordPress-Projekten mit PHP 8.x kann die folgende Fehlermeldung auftreten:

Schwerwiegender Fehler: Uncaught PHP_CodeSnifferExceptionsRuntimeException: trim(): Die Übergabe von Null an Parameter Nr. 1 ($string) vom Typ string ist in /path/... veraltet.

Dieser Fehler tritt aufgrund einer veralteten Warnung in PHP 8.x auf, bei der die Übergabe von Null an die Funktion trim() nicht mehr zulässig ist. Dieses Problem tritt insbesondere im Rahmen eines WordPress Coding Standards (WPCS)-Sniffs auf, der Teil des PHP_CodeSniffer-Setups ist. Zum Zeitpunkt der Erstellung dieses Artikels besteht dieses Problem weiterhin, selbst mit den neuesten Versionen von PHP_CodeSniffer und WordPress Coding Standards.

PHP_CodeSniffer und WPCS verstehen

PHP_CodeSniffer ist ein Tool, das Entwicklern hilft, Codierungsstandards einzuhalten, indem es ihren PHP-Code auf Verstöße gegen bestimmte Regeln überprüft. WordPress Coding Standards (WPCS) bieten eine Reihe von Richtlinien zum Schreiben von konsistentem und sauberem Code in WordPress-Projekten. Der oben erwähnte Fehler weist typischerweise darauf hin, dass ein Codeausschnitt diese Standards aufgrund von Änderungen im Verhalten von PHP nicht einhält.

Festsetzung

Um dies zu beheben, können wir die Datei, die das Problem verursacht, manuell ändern, die Zeile suchen, in der trim() aufgerufen wird, und den Code aktualisieren, um sicherzustellen, dass Nullwerte beim Aufruf von trim() ordnungsgemäß behandelt werden.

Suchen Sie beispielsweise in der Datei vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php die Zeile 280 und ersetzen Sie die folgende Zeile:

// 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' ) );
Nach dem Login kopieren

Aber wie bei vielen Entscheidungen in der Softwareentwicklung nur weil Sie dies tun können, heißt das nicht, dass Sie es tun sollten.

Fixing PHP_CodeSniffer Null Trim() Errors in WordPress Coding Standards

Während der vorherige Ansatz den Fehler beheben kann, ist es wichtig, sich daran zu erinnern, dass das Ändern von Herstellerdateien keine nachhaltige Lösung ist. Änderungen gehen jedes Mal verloren, wenn Sie Ihre Abhängigkeiten über Composer aktualisieren.

Ein besserer Ansatz besteht darin, eine Patch-Datei zu erstellen.

Erstellen einer Patch-Datei

Hier finden Sie eine Schritt-für-Schritt-Anleitung zum Erstellen und Anwenden eines Patches für das Problem

Erstellen Sie die Patch-Datei

Eine robustere Lösung besteht darin, eine Patch-Datei zu erstellen. Mit dieser Methode können Sie Ihre Änderungen jedes Mal automatisch anwenden, wenn Sie Ihre Abhängigkeiten installieren oder aktualisieren.

Eine Patchdatei ist eine Textdatei, die die Unterschiede zwischen zwei Versionen einer Datei enthält – im Wesentlichen ein „Vorher“- und „Nachher“-Schnappschuss.

Erstellen Sie in Ihrem Projektverzeichnis einen Ordner für die Patchdatei:

mkdir -p Patches

Erstellen Sie im Ordner „patches/“ eine neue Patchdatei mit dem Namen „fix-null-trim.patch“. Sie können dies mit Ihrem Texteditor tun:

Touch patches/fix-null-trim.patch

Öffnen Sie fix-null-trim.patch in Ihrem Texteditor und fügen Sie den folgenden Inhalt hinzu:

  --- 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' ) );
Nach dem Login kopieren

Dieser Patch weist Composer an, die problematische Zeile in PrefixAllGlobalsSniff.php durch eine sicherere Version zu ersetzen, die den Null-Koaleszenzoperator (??) verwendet, um die Übergabe von Null an trim() zu vermeiden.

Ändern Sie „composer.json“, um den Patch anzuwenden

Als nächstes müssen Sie Composer anweisen, diesen Patch automatisch anzuwenden, wenn Sie Ihre Abhängigkeiten installieren oder aktualisieren.

Öffnen Sie die Datei „composer.json“ Ihres Projekts. Fügen Sie im Abschnitt „Extra“ die folgende Konfiguration hinzu. Wenn der Abschnitt „Extra“ noch nicht vorhanden ist, müssen Sie ihn erstellen.

    json

    "extra": {
        "patches": {
            "wp-coding-standards/wpcs": {
                "Fix null trim() issue": "patches/fix-null-trim.patch"
            }
        }
    }

Nach dem Login kopieren

Dadurch wird Composer angewiesen, die Datei „fix-null-trim.patch“ auf das Paket „wp-coding-standards/wpcs“ anzuwenden, wenn Abhängigkeiten installiert oder aktualisiert werden.

Installieren Sie das Composer-Patch-Plugin

Um Patches über Composer anzuwenden, benötigen Sie das Composer-Patches-Plugin. Führen Sie zur Installation den folgenden Befehl aus:

Komponisten benötigen Cweagans/Composer-Patches

Wenden Sie den Patch an

Jetzt können Sie den Patch anwenden, indem Sie den folgenden Befehl ausführen:

Composer-Installation

Während der Installation wendet Composer den Patch aus dem Ordner „patches/“ auf die Datei „PrefixAllGlobalsSniff.php“ an.

Durch das Erstellen und Anwenden einer Patchdatei stellen Sie sicher, dass Ihre Korrekturen über alle Composer-Updates hinweg bestehen bleiben und befolgen dabei die Best Practices in der Softwareentwicklung. Überwachen Sie regelmäßig Aktualisierungen von PHP_CodeSniffer und WordPress Coding Standards, da diese Probleme möglicherweise in zukünftigen Versionen behoben werden. Dieser proaktive Ansatz verbessert nicht nur die Codequalität, sondern verbessert auch Ihren Entwicklungsworkflow in PHP 8.x-Umgebungen.

Ich habe die Patch-Datei in diesem Gist geteilt. Sie können es gerne als Referenz verwenden, um ähnliche Korrekturen in Ihren Projekten zu implementieren!

Das obige ist der detaillierte Inhalt vonBehebung von PHP_CodeSniffer Null Trim()-Fehlern in WordPress-Codierungsstandards. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!