중요한
여러분, 안녕하세요! 이 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 구성에 extension.neon 포함시킵니다.
includes :
- vendor/szepeviktor/phpstan-wordpress/extension.neon 추가 설정이 필요하지 않습니다. ? 아래와 같이 phpstan을 구성하십시오 - 아래와 같이 :
parameters :
level : 5
paths :
- plugin.php
- inc/자세한 내용은 Phpstan 구성 참조를 방문하십시오.
Composer Autoloader 또는 Custom Autoloader를 사용하십시오!
분석을 실행합니다.
vendor/bin/phpstan analyze 그런 다음 오류를 수정하고 GOTO 10 !
examples 디렉토리 (예 : examples/phpstan.neon.dist 에 추가 정보가 있습니다.
특정 지침은 WooCommerce Stubs를 참조하십시오.
apply_filters() docblock 사용 WordPress 생태계는 종종 비표준이 아닌 방식으로 PhPDOC DocBlocks를 사용하여 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 으로 해석합니다.
최상의 결과를 얻으려면이 docblocks의 첫 번째 @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