PSR-2 是Coding Style Guide,表示 PHP 代碼格式規(guī)范,PHP 語(yǔ)言流行的原因之一就是編寫(xiě)代碼沒(méi)有約束,長(zhǎng)期以來(lái) PHP 沒(méi)有格式規(guī)范的,雖然以前也有 PEAR 標(biāo)準(zhǔn)的規(guī)范,但現(xiàn)在越來(lái)越不流行了。這時(shí)候 PSR-2 標(biāo)準(zhǔn)出現(xiàn)了,它的出現(xiàn)應(yīng)該感謝 Packagist(The PHP Package Repositor) 和 命名空間的出現(xiàn),PSR-2 成為了名義上的官方代碼標(biāo)準(zhǔn)。
代碼格式規(guī)范個(gè)人認(rèn)為解決了兩個(gè)問(wèn)題,第一就是代碼一致性,避免在寫(xiě)代碼的時(shí)候?yàn)楦袷絾?wèn)題而費(fèi)勁心思;第二就是可讀性,讓你的代碼更容易被理解。代碼格式規(guī)范雖然不是強(qiáng)制的,但卻是編碼過(guò)程中必不可少的一部分,另外代碼格式規(guī)范和變量、函數(shù)、類(lèi)、文件等命名規(guī)范不是一回事。
在代碼格式規(guī)范中,個(gè)人覺(jué)得以下幾方面比較重要,花括號(hào)的匹配形式、換行的處理藝術(shù)、 tab 鍵和空格的使用。
PHP CodeSniffer
PHP CodeSniffer 是 PHP 代碼的分析工具,能夠以特定的代碼格式標(biāo)準(zhǔn)檢測(cè)代碼,建議你安裝最新的版本,因?yàn)槔习姹臼遣恢С?PSR-2 標(biāo)準(zhǔn)的。常用的幾個(gè)命令:
phpcs -h
phpcs -version
phpcs -i #顯示所有支持的代碼標(biāo)準(zhǔn)
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 只能檢測(cè)代碼出現(xiàn)什么格式問(wèn)題,但是不能自動(dòng)修復(fù),而 PHP Coding Standards Fixer 卻可以。另外請(qǐng)務(wù)必使用最新版本,查看使用方法也盡量在 Github 上看。
使用方法很簡(jiǎn)單:
php-cs-fixer fix /path/code --rules=@PSR2
php-cs-fixer fix /path/code --rules=@PSR2,strict_comparison
在使用過(guò)程中有個(gè)問(wèn)題說(shuō)明下,類(lèi)似下面的代碼,多余的空格是不能修復(fù)的,有誰(shuí)知道如何處理,還請(qǐng)告之
$x = 10;
if ($x > 10) {
echo 'ok';
}
如何在 Netbeans 上支持 PSR-2 標(biāo)準(zhǔn)
在 Netbeans 是內(nèi)置了一個(gè) PHP 代碼格式標(biāo)準(zhǔn),假如需要使用 PSR-2 標(biāo)準(zhǔn),需要安裝 Netbeans-psr 插件,安裝后可以在 【工具->選項(xiàng)->編輯器->格式設(shè)置】中調(diào)整具體的語(yǔ)法格式,可以看下面這張圖。
![Netbeans 格式設(shè)置][netbeans_psr-2_1]
[netbeans_psr-2_1]: http://notes.newyingyong.cn/static/image/2017/netbeans_psr-2_1.png "Netbeans 格式設(shè)置"
設(shè)置后,可以對(duì)代碼進(jìn)行格式化,讓代碼符合 PSR-2 標(biāo)準(zhǔn),也可以在 Netbeans 中配置保存代碼的時(shí)候(CTRL+S)可以自動(dòng)格式化,目前我使用的就是這種方式,感覺(jué)還不錯(cuò)。
在 Netbeans 中使用 php-cs-fixer 軟件
可以在 Netbeans 中運(yùn)行 php-cs-fixer 來(lái)格式化代碼,首先要安裝一個(gè)插件,注意不是在【工具->選項(xiàng)->PHP->編碼標(biāo)準(zhǔn)修復(fù)程序】中進(jìn)行配置,具體可以查看這個(gè) issues。
第二個(gè)問(wèn)題就是在使用這個(gè)插件的時(shí)候,要注意 Netbeans 版本、php-cs-fixer 版本、插件版本,為這個(gè)問(wèn)題我還提了個(gè) issues。
Submine Text 中使用 php-cs-fixer 軟件
這個(gè)插件是一個(gè)綜合的插件,安裝并配置后,可以很方便的格式化代碼。
{
"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",
}