PHP語(yǔ)言中的PSR-2及相關(guān)工具

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",
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Composer Repositories Composer源 Firegento - Magento模塊Comp...
    零一間閱讀 4,017評(píng)論 1 66
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,893評(píng)論 25 709
  • 良好實(shí)踐,這次主要挑了一些開(kāi)發(fā)PHP應(yīng)用時(shí)應(yīng)該運(yùn)用上的良好實(shí)踐進(jìn)行詳細(xì)記錄,特別是良好實(shí)踐部分中密碼和流兩個(gè)點(diǎn)。關(guān)...
    BeckJiang閱讀 2,188評(píng)論 6 41
  • 分析閱讀的第二個(gè)規(guī)則:用一個(gè)單一的句子,或最多幾個(gè)句話(huà)(一小段文字)來(lái)敘述整本書(shū)的內(nèi)容。 第二規(guī)則主要是把握書(shū)的整...
    飛鷹于凱閱讀 367評(píng)論 0 0
  • 花了三天時(shí)間看完了傳說(shuō)中的《don’t make me think》,整本書(shū)篇幅不長(zhǎng),圖文并茂,沒(méi)有啰啰嗦嗦的大道...
    托爸閱讀 784評(píng)論 0 5

友情鏈接更多精彩內(nèi)容