PHP语言中的PSR-2及相关工具

作者: 虞大胆的叽叽喳喳 | 来源:发表于2017-04-20 13:54 被阅读142次

    PSR-2 是Coding Style Guide,表示 PHP 代码格式规范,PHP 语言流行的原因之一就是编写代码没有约束,长期以来 PHP 没有格式规范的,虽然以前也有 PEAR 标准的规范,但现在越来越不流行了。这时候 PSR-2 标准出现了,它的出现应该感谢 Packagist(The PHP Package Repositor) 和 命名空间的出现,PSR-2 成为了名义上的官方代码标准。

    代码格式规范个人认为解决了两个问题,第一就是代码一致性,避免在写代码的时候为格式问题而费劲心思;第二就是可读性,让你的代码更容易被理解。代码格式规范虽然不是强制的,但却是编码过程中必不可少的一部分,另外代码格式规范和变量、函数、类、文件等命名规范不是一回事。

    在代码格式规范中,个人觉得以下几方面比较重要,花括号的匹配形式、换行的处理艺术、 tab 键和空格的使用。

    PHP CodeSniffer

    PHP CodeSniffer 是 PHP 代码的分析工具,能够以特定的代码格式标准检测代码,建议你安装最新的版本,因为老版本是不支持 PSR-2 标准的。常用的几个命令:

    phpcs -h
    phpcs -version
    phpcs -i #显示所有支持的代码标准
    phpcs --extensions=php #仅仅检查 PHP 后缀的文件
    phpcs --standard=psr2 file.php 
    phpcs --ignore=".gitignore",*/data/* /path/code
    phpcs -e  --standard=psr2
    phpcs --standard=psr2 --sniffs=Generic.PHP.LowerCaseConstant #only run two sniffs over the code instead of all sniffs
    phpcs --standard=psr2 --exclude=Generic.PHP.LowerCaseConstant #run all sniffs except for the two specificed
    

    PHP Coding Standards Fixer

    PHP CodeSniffer 只能检测代码出现什么格式问题,但是不能自动修复,而 PHP Coding Standards Fixer 却可以。另外请务必使用最新版本,查看使用方法也尽量在 Github 上看。

    使用方法很简单:

    php-cs-fixer fix /path/code --rules=@PSR2
    php-cs-fixer fix /path/code --rules=@PSR2,strict_comparison
    

    在使用过程中有个问题说明下,类似下面的代码,多余的空格是不能修复的,有谁知道如何处理,还请告之

    $x =             10;
    if ($x        > 10) { 
        echo         'ok';
    }
    

    如何在 Netbeans 上支持 PSR-2 标准

    在 Netbeans 是内置了一个 PHP 代码格式标准,假如需要使用 PSR-2 标准,需要安装 Netbeans-psr 插件,安装后可以在 【工具->选项->编辑器->格式设置】中调整具体的语法格式,可以看下面这张图。

    ![Netbeans 格式设置][netbeans_psr-2_1]
    [netbeans_psr-2_1]: http://notes.newyingyong.cn/static/image/2017/netbeans_psr-2_1.png "Netbeans 格式设置"

    设置后,可以对代码进行格式化,让代码符合 PSR-2 标准,也可以在 Netbeans 中配置保存代码的时候(CTRL+S)可以自动格式化,目前我使用的就是这种方式,感觉还不错。

    在 Netbeans 中使用 php-cs-fixer 软件

    可以在 Netbeans 中运行 php-cs-fixer 来格式化代码,首先要安装一个插件,注意不是在【工具->选项->PHP->编码标准修复程序】中进行配置,具体可以查看这个 issues

    第二个问题就是在使用这个插件的时候,要注意 Netbeans 版本、php-cs-fixer 版本、插件版本,为这个问题我还提了个 issues

    Submine Text 中使用 php-cs-fixer 软件

    这个插件是一个综合的插件,安装并配置后,可以很方便的格式化代码。

    {
        "php_cs_fixer_on_save": false,
        "php_cs_fixer_show_quick_panel": true,
        "php_cs_fixer_executable_path": "C:\\vendor\\bin\\php-cs-fixer.bat",
    }
    

    相关文章

      网友评论

        本文标题:PHP语言中的PSR-2及相关工具

        本文链接:https://www.haomeiwen.com/subject/fvhlzttx.html