Важный
Всем привет! Это Виктор, который управляет этим расширением PHPSTAN. Я планирую прекратить участие в экосистеме WordPress, потому что она чрезвычайно сложно, и никто не просит меня присоединиться к его команде, поскольку я мыслитель, человек DevOps, производитель инструментов (не строитель).
Пожалуйста, поддержите мою работу, чтобы избежать отказа от этого пакета.
Спасибо!
Статический анализ экосистемы WordPress.
php-stubs/wordpress-stubs .php-stubs/wordpress-stubsapply_filters() и do_action() вызовы, рассматривая тип первого @param как окончательным. Чтобы использовать это расширение, требовать его в композиторе:
composer require --dev szepeviktor/phpstan-wordpressЕсли вы также установите Phpstan/Extension-Installer, то вы все настроены!
Если вы не хотите использовать phpstan/extension-installer , включите extension.neon в конфигурации вашего проекта Phpstan:
includes :
- vendor/szepeviktor/phpstan-wordpress/extension.neon Никакой дополнительной настройки не требуется. ? Просто настройте Phpstan - например - как показано ниже:
parameters :
level : 5
paths :
- plugin.php
- inc/Для получения более подробной информации посетите ссылку на конфигурацию PHPSTAN.
Используйте Composer AutoLoAloader или пользовательский автозагрузчик!
Запустите анализ с:
vendor/bin/phpstan analyze Затем исправьте ошибку и GOTO 10 !
Вы находите дополнительную информацию в каталоге examples , например examples/phpstan.neon.dist
Обратитесь к Woocommerce Stubs для конкретного руководства.
apply_filters() Экосистема WordPress часто использует Docblocks 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 и инструктирует Phpstan рассматривать тип возврата фильтра как определенным, основываясь на первом теге @param . В этом примере Phpstan интерпретирует $title как string .
Для достижения наилучших результатов убедитесь, что первый тег @param в этих Docblocks является точным.
class Name { ... } .inc/ .apply_filters() .eval , extract , compact , list$a = '15'; if ($a) ...if вам нужна логическая), см. Функции обработки переменныхexit_error в WP_CLI::launch или WP_CLI::runcommand для улучшения тестируемости. WordPress использует условную функцию и определение класса, чтобы разрешить переопределение. Используйте команду sed , чтобы исключить заглушки функций, когда они определены ранее.
sed -i -e ' s#function is_gd_image#function __is_gd_image# ' vendor/php-stubs/wordpress-stubs/wordpress-stubs.php