PHP 8.x を使用して WordPress プロジェクトで作業しているときに、次のエラーが発生する場合があります:
致命的なエラー: PHP_CodeSniffer\Exceptions\RuntimeException がキャッチされません: トリム(): 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.json を変更します。
プロジェクトのcomposer.jsonファイルを開きます。 「extra」セクションに次の構成を追加します。 「追加」セクションがまだ存在しない場合は、作成する必要があります。
--- 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' ) );これにより、Composer は依存関係をインストールまたは更新するときに、fix-null-trim.patch ファイルを wp-coding-standards/wpcs パッケージに適用するように指示されます。
Composer パッチプラグインをインストールする
作曲家には cweagans/composer-patches が必要です
パッチを適用する
作曲家のインストール
インストール中に、Composer は patches/ フォルダーから PrefixAllGlobalsSniff.php ファイルにパッチを適用します。
パッチ ファイルを作成して適用することで、修正が Composer のアップデート後も持続することを保証し、ソフトウェア開発のベスト プラクティスに準拠します。 これらの問題は将来のリリースで解決される可能性があるため、PHP_CodeSniffer と WordPress コーディング標準の更新を定期的に監視してください。この積極的なアプローチにより、コードの品質が向上するだけでなく、PHP 8.x 環境での開発ワークフローも改善されます。 この Gist でパッチ ファイルを共有しました。プロジェクトに同様の修正を実装するための参照として自由に使用してください!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3