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",
}