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