„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Behebung von PHP_CodeSniffer Null Trim()-Fehlern in WordPress-Codierungsstandards

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

Veröffentlicht am 01.11.2024
Durchsuche:155

Beim Arbeiten an WordPress-Projekten mit PHP 8.x kann der folgende Fehler auftreten:

Schwerwiegender Fehler: Uncaught PHP_CodeSniffer\Exceptions\RuntimeException: 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 dabei 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 aufgrund von Änderungen im Verhalten von PHP nicht diesen Standards entspricht.

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 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' ) );

Aber wie bei vielen Entscheidungen in der Softwareentwicklung gilt: 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 möglicherweise 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 dann 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 Patch-Datei 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' ) );

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"
            }
        }
    }

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

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:

Composer benötigt 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 Composer-Updates hinweg bestehen bleiben und dabei die Best Practices in der Softwareentwicklung einhalten. Ü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!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/sarahcssiqueira/fixing-phpcodesniffer-null-trim-errors-in-wordpress-coding-standards-31k1?1 Bei Verstößen wenden Sie sich bitte an [email protected] um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3