使用 PHPStan 强化PHP代码质量-php教程

资源魔 11 0

这里引见一款PHP代码动态剖析对象:PHPStan,没有需求运转代码,也能够对代码进行严格的语法检测,只管即便将代码运转谬误率降到最低。

PHPStan

装置

今朝,PHPStanV0.10.2要求零碎环境的PHP版本没有低于7.1。用Composer全局装置:

$ composer global require phpstan/phpstan

应用

PHPStan动态剖析的应用办法非常简略:

$ phpstan analyse [-c|--configuration CONFIGURATION] [-l|--level LEVEL] [--no-progress] [--debug] [-a|--autoload-file AUTOLOAD-FILE] [--errorFormat ERRORFORMAT] [--memory-limit MEMORY-LIMIT] [--] [<paths>]...
  • configuration:运转设置装备摆设文件的门路;

  • level:严格级别,0-7,越年夜越严格;

  • no-progress:没有显示进度;

  • debug:debug模式;

  • autoload-file:主动加载文件的门路;

  • errorFormat:谬误格局;

  • memory-limit:内存限度;

  • paths:待剖析的文件门路。

比方,剖析一个PHP文件:

$ phpstan analyse --level=7 --autoload-file=/PATH/TO/vendor/autoload.php /PATH/TO/someone.php

PHPStan in VSCode

当然,语法剖析应该是编纂器做的事,写完代码还要切换到饬令终端执行phpstan,不免过于繁琐。以是这里保举一款VSCode扩大:PHP Static Analysis。

PHP Static Analysis

微信截图_20200608090947.png

起首,用Composer全局装置PHPStan;而后,正在VSCode的扩大治理中搜寻PHP Static Analysis,装置第一个婚配的扩大;重载VSCode重载窗口后,扩大会主动剖析VSCode下关上的PHP文件。

运转成果:

微信截图_20200608090935.png

比方,申明了一个变量未挪用,挪用了一个未申明的变量以及挪用了一个不决义的办法等等这样谬误城市被检测出了。

不外,宽松一点地来讲,其实$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里的注册办法:

<?php
    ...
    public function register()
    {
        if ($this->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 php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!