ホームページ >バックエンド開発 >PHPチュートリアル >WordPress コーディング標準における PHP_CodeSniffer Null Trim() エラーの修正
PHP 8.x を使用して WordPress プロジェクトで作業しているときに、次のエラーが発生する場合があります:
致命的なエラー: PHP_CodeSnifferExceptionsRuntimeException がキャッチされません: トリム(): string 型のパラメーター #1 ($string) に null を渡すことは、/path/... では非推奨です
このエラーは、PHP 8.x の非推奨の警告により発生します。PHP 8.x では、trim() 関数に null を渡すことが許可されなくなりました。具体的には、この問題は、PHP_CodeSniffer セットアップの一部である WordPress コーディング標準 (WPCS) スニフ内で発生します。この記事の執筆時点では、PHP_CodeSniffer と WordPress コーディング標準の最新バージョンでも、この問題は解決されません。
PHP_CodeSniffer は、指定されたルールに対する違反が PHP コードにないかチェックすることで、開発者がコーディング標準を維持するのに役立つツールです。 WordPress コーディング標準 (WPCS) は、WordPress プロジェクトで一貫性のあるクリーンなコードを記述するための一連のガイドラインを提供します。上記のエラーは通常、PHP の動作の変更により、コード スニペットがこれらの標準に準拠していないことを示します。
これを修正するには、問題の原因となっているファイルを手動で変更し、trim() が呼び出される行を見つけてコードを更新して、trim() の呼び出し時に null 値が適切に処理されるようにします。
たとえば、ファイル vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php で、行 280 を見つけて次の行を置き換えます。
// 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' ) );
ただし、ソフトウェア開発における多くの意思決定と同様、これができるからといって、そうすべきであるという意味ではありません。
前のアプローチでエラーが修正される可能性がありますが、ベンダー ファイルの変更は持続可能な解決策ではないことを覚えておくことが重要です。 Composer 経由で依存関係を更新するたびに、変更内容は失われます。
より良いアプローチは、パッチ ファイルを作成することです。
問題に対するパッチを作成して適用する方法についてのステップバイステップのガイドは次のとおりです
より堅牢な解決策は、パッチ ファイルを作成することです。この方法を使用すると、依存関係をインストールまたは更新するたびに変更を自動的に適用できます。
パッチ ファイルは、ファイルの 2 つのバージョン間の相違点を含むテキスト ファイルです。つまり、基本的には「前」と「後」のスナップショットです。
プロジェクト ディレクトリに、パッチ ファイルを保存するフォルダーを作成します。
mkdir -pパッチ
patches/ フォルダー内に、fix-null-trim.patch という新しいパッチ ファイルを作成します。これはテキストエディタで行うことができます:
タッチパッチ/fix-null-trim.patch
テキストエディタで fix-null-trim.patch を開き、次のコンテンツを追加します:
--- 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' ) );
このパッチは、PrefixAllGlobalsSniff.php の問題のある行を、trim() に null を渡さないように null 合体演算子 (??) を使用するより安全なバージョンに置き換えるよう Composer に指示します。
次に、依存関係をインストールまたは更新するたびにこのパッチを自動的に適用するように Composer に指示する必要があります。
プロジェクトのcomposer.jsonファイルを開きます。 「extra」セクションに次の構成を追加します。 「追加」セクションがまだ存在しない場合は、作成する必要があります。
json "extra": { "patches": { "wp-coding-standards/wpcs": { "Fix null trim() issue": "patches/fix-null-trim.patch" } } }
これは、Composer が依存関係をインストールまたは更新するときに、fix-null-trim.patch ファイルを wp-coding-standards/wpcs パッケージに適用するように指示します。
Composer 経由でパッチを適用するには、composer-patches プラグインが必要です。次のコマンドを実行してインストールします。
作曲家には cweagans/composer-patches が必要です
これで、次のコマンドを実行してパッチを適用できます:
作曲家のインストール
インストール中に、Composer は patches/ フォルダーから PrefixAllGlobalsSniff.php ファイルにパッチを適用します。
パッチ ファイルを作成して適用することにより、修正が Composer の更新後も持続することを保証し、ソフトウェア開発のベスト プラクティスに準拠します。 これらの問題は将来のリリースで解決される可能性があるため、PHP_CodeSniffer および WordPress コーディング標準の更新を定期的に監視してください。この積極的なアプローチにより、コードの品質が向上するだけでなく、PHP 8.x 環境での開発ワークフローも改善されます。
この Gist でパッチ ファイルを共有しました。プロジェクトに同様の修正を実装するための参照として自由に使用してください!
以上がWordPress コーディング標準における PHP_CodeSniffer Null Trim() エラーの修正の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。