作者:腾讯财经321 | 来源:互联网 | 2020-09-08 05:45
比如,声明了一个变量未调用,调用了一个未声明的变量和调用了一个未定义的方法等等这样错误都会被检测出了。
不过,宽松一点地来说,其实$this->array()方法是存在的,只是通过魔术方法__call()实现的。
PHPStan with Laravel
高严格级别的PHPStan检测到调用未声明的类方法时,会报告类中方法不存在的错误,即使这个类定义了__call()或__callStatic()。
很多应用框架为了优雅,大量使用了魔术方法,比如Laravel。
用PHPStan检测Laravel项目,自然会报告很多调用未声明类方法的错误,对于这个问题,可以借助laravel-ide-helper来降低误报。
安装laravel-ide-helper
$ cd /PATH/TO/LARAVEL_PROJECT
$ composer require barryvdh/laravel-ide-helper
注入LaravelIdeHelper
编辑app/Providers/AppServiceProvider.php里的注册方法:
app->environment() !== 'production') {
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}
// ...
}
生成_ide_helper.php
$ cd /PATH/TO/LARAVEL_PROJECT
$ php artisan ide-helper:generate
这时,Laravel框架中的Facade类,原本通过__callStatic()获取的静态方法,全部在_ide_helper.php声明了,在PHPStan检测Laravel项目代码时引入_ide_helper.php文件,就可以减少误报。
PHPStan配置
在Laravel项目的根目录下,新建phpstan.neon文件:
parameters:
autoload_files:
- %currentWorkingDirectory%/_ide_helper.php
在Laravel项目的根目录下,执行phpstan命令时,会自动使用phpstan.neon这个配置。
推荐教程:《PHP》
以上就是使用 PHPStan 强化PHP代码质量的详细内容,更多请关注 第一PHP社区 其它相关文章!