Importante
Olá pessoal! Este é o Viktor que executa essa extensão do Phpstan. Estou planejando parar de contribuir para o ecossistema do WordPress, porque é extremamente difícil e ninguém me pede para me juntar à sua equipe, pois sou um pensador, uma pessoa do DevOps, um fabricante de ferramentas (não um construtor).
Apoie meu trabalho para evitar abandonar este pacote.
Obrigado!
Análise estática para o ecossistema WordPress.
php-stubs/wordpress-stubs .php-stubs/wordpress-stubsapply_filters() e do_action() , tratar o tipo do primeiro @param como definitivo. Para usar esta extensão, requer no compositor:
composer require --dev szepeviktor/phpstan-wordpressSe você também instalar o Phpstan/Extension-Installer, está tudo pronto!
Se você não quiser usar phpstan/extension-installer , inclua extension.neon na configuração do Phpstan do seu projeto:
includes :
- vendor/szepeviktor/phpstan-wordpress/extension.neon Nenhuma configuração adicional é necessária. ? Basta configurar o phpstan - por exemplo - como mostrado abaixo:
parameters :
level : 5
paths :
- plugin.php
- inc/Para mais detalhes, visite a referência de configuração do Phpstan.
Use o AutoLoader do Composer ou um Autoloader personalizado!
Execute a análise com:
vendor/bin/phpstan analyze Em seguida, corrija um erro e GOTO 10 !
Você encontra mais informações no diretório de examples , por exemplo examples/phpstan.neon.dist
Consulte os Stubs WooCommerce para obter orientações específicas.
apply_filters() DOCBLOCK O ecossistema do WordPress geralmente usa documentos PHPDOC de uma maneira fora do padrão de documentar os parâmetros passados para apply_filters() . Aqui está um exemplo:
/**
* 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 ); Esta extensão lê esses documentos e instrui o Phpstan a tratar o tipo de retorno do filtro como certo, com base na primeira tag @param . Neste exemplo, o phpstan interpreta $title como string .
Para obter melhores resultados, verifique se a primeira tag @param nesses documentos é precisa.
class Name { ... } .inc/ dedicado.apply_filters() .eval , extract , compact , list$a = '15'; if ($a) ...if precisar de um booleano), consulte Funções de manuseio variávelexit_error em WP_CLI::launch ou WP_CLI::runcommand para melhorar a testabilidade. O WordPress usa a função condicional e a definição de classe para permitir substituições. Use o comando sed para excluir os stubs da função quando forem definidos anteriormente.
sed -i -e ' s#function is_gd_image#function __is_gd_image# ' vendor/php-stubs/wordpress-stubs/wordpress-stubs.php