重要
こんにちは、みんな!これは、このphpstan拡張機能を実行するViktorです。 WordPressエコシステムへの貢献をやめることを計画しています。なぜなら、それは非常に難しいので、私が思想家、Devopsの人、ツールメーカー(ビルダーではない)であるため、誰も私に彼のチームに参加するように頼むことはないからです。
このパッケージを放棄しないように、私の仕事をサポートしてください。
ありがとう!
WordPressエコシステムの静的分析。
php-stubs/wordpress-stubsパッケージをロードします。php-stubs/wordpress-stubsでカバーされていない機能に動的リターンタイプ拡張機能を提供しますapply_filters()およびdo_action()呼び出しの前にオプションのdocblocksを検証し、最初の@paramのタイプを決定的なものとして扱います。 この拡張機能を使用するには、作曲家でそれを必要とします。
composer require --dev szepeviktor/phpstan-wordpressPHPSTAN/Extension-Installerもインストールする場合は、すべて設定されています。
phpstan/extension-installer使用したくない場合は、プロジェクトのphpstan configにextension.neonを含めます。
includes :
- vendor/szepeviktor/phpstan-wordpress/extension.neon 追加のセットアップは必要ありません。 ?以下に示すように、phpstanを構成するだけです。
parameters :
level : 5
paths :
- plugin.php
- inc/詳細については、PHPSTAN Config Referenceをご覧ください。
Composer Autoloaderまたはカスタムオートローダーを使用してください!
分析を実行します:
vendor/bin/phpstan analyze次に、エラーを修正し、 GOTO 10 !
詳細情報は、 examplesディレクトリ、 examples/phpstan.neon.distなど
特定のガイダンスについては、WooCommerceスタブを参照してください。
apply_filters() docblockの使用WordPressエコシステムは、多くの場合、PHPDOCドックブロックを非標準の方法で使用して、 apply_filters()に渡されたパラメーターを文書化します。これが例です:
/**
* Filters the page title when creating an HTML drop-down list of pages.
*
* @param string $title Page title.
* @param WP_Post $page Page data object.
*/
$ title = apply_filters ( ' list_pages ' , $ title , $ page );この拡張機能は、これらのdocblocksを読み取り、最初の@paramタグに基づいて、フィルターのリターンタイプを確実に扱うようにphpstanに指示します。この例では、phpstanは$title stringとして解釈します。
最良の結果を得るには、これらのdocblockの最初の@paramタグが正確であることを確認してください。
class Name { ... }の外側の追加コードはありません。inc/ディレクトリにクラスを保存します。apply_filters()呼び出しに正確なphpdocブロックを追加します。eval 、 extract 、 compact 、 list$a = '15'; if ($a) ...if )、変動処理機能を参照してくださいWP_CLI::launchまたはWP_CLI::runcommandでexit_error有効にしないでください。 WordPressは、条件付き関数とクラスの定義を使用して、オーバーライドを可能にします。 sedコマンドを使用して、以前に定義されたときに関数スタブを除外します。
sed -i -e ' s#function is_gd_image#function __is_gd_image# ' vendor/php-stubs/wordpress-stubs/wordpress-stubs.php