我相信每個公司都有一套完備的代碼規範標準,但標準是標準,如何能有效的讓所有人遵守,那就要工具的輔助和實時提醒了。
如前端 vue 的大家基本都會使用 eslint 來約束我們的代碼,一旦多一個空格都會提示你有問題,當 npm run dev 或者 npm run watch 就會提示你哪哪哪不符合規範。
在 Laravel 開發中,照樣也有類似的工具,這也是本文的所要推薦的:
phpcs
在開始使用 phpcs 之前,我們簡單來說說 Laravel 的代碼規範標準
Laravel 代碼規範
Laravel follows the PSR-2 coding standard and the PSR-4 autoloading standard.
來自 Laravel 的說明:https://laravel.com/
幾個代碼規範的含義
其實現在很多網站已經掛出 PSR-2 編碼規範的說明了,推薦看下面這個:
https://laravel-china.org/docs/psr/psr-2-coding-style-guide/1606
但我在實際使用時,除了能夠按照上面說的規範來,還有一塊重要的內容他們沒提。
文件和類註釋
主要包含以上內容塊:文件說明、PHP 版本號、還有就是按順序的這五要素:(category, package, author, license, link),而且這五要素排版要對齊哦,一般人我不告訴哦~~~
方法註釋
主要包含:方法說明、空一行、參數塊 (類型、參數名、含義 —— 這個需要對齊)、空一行、最後
return 類型。
安裝 phpcs
使用 phpcs 之前,還是需要先知道這個東西是什麼吧?
PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.
摘自:https://github.com/squizlabs/PHP_CodeSniffer
主要包含兩個工具:phpcs 和 phpcbf (這個之後再說)。phpcs 主要對 PHP、JavaScript、CSS 文件定義了一系列代碼規範標準,如我們會使用的,也是 Laravel 使用的PHP PSR-2 標準,能夠檢測出不符合我們定義的代碼規範的代碼,併發出警告和錯誤,當然我們也可以設置報錯的級別。
對於 phpcs 的使用,主要有兩個途徑:
1、在本地開發過程中,實時對我們的代碼進行檢測,讓代碼提交版本庫時,就已經符合規範標準了;
2、在服務器對提交的代碼進行檢測,如果不符合標準的,則不入代碼庫,打回要求修改。
下面我們開始說說根據不同方法,如何安裝 phpcs 工具的。
composer
寫 Laravel 代碼的同學,對使用 composer 應該很熟悉了,這種方法比較推崇。但主要區分為是「全局安裝」還是按「項目安裝」。
這裡我本人推薦採用「全局安裝」,可以在各個 IDE 上直接填入全局安裝的 phpcs 可執行路徑。但如果你的版本庫是使用「git」的話,那我推薦使用「項目安裝」,下文就知道原因了。
注: 我使用這種方式「全局安裝」後,發現每回都關聯不了「VSCode」,這個原因待查。
pear
安裝 pear
開始安裝配置,
先選擇 1 (change the Installation Base);
輸入:/usr/local/pear
再選擇 4 (change the Binaries directory),
輸入:/usr/local/bin
開始安裝 PHP_CodeSniffer
在 MacOS 系統下:
在 Centos Linux 系統下安裝效果:
此方法比較有效果,而且也符合在多系統上嘗試,比如本人同時在「Mac」和 「Linux」下都可以正常安裝和使用。
注:我沒在「Windows」環境下嘗試,尚未知道效果。
brew
這種方法顯然在「Mac」系統下有效了!
當然根據官網的文檔,還有其他方法,歡迎大家去嘗試:
具體可參考:https://github.com/squizlabs/PHP_CodeSniffer 中的「Installation」部分。
使用 phpcs
無論是本地還是服務器,只要我們安裝好了,自然就可以開始使用了。最直觀也是最簡單的方法莫過於用命令行的方式了,如:
但想到我們是用 IDE 寫代碼的,而且是希望實時看到效果的,所以下面嘗試在幾個 IDE 下看看如何使用。
安裝 VSCode 插件
在插件界面,搜索:phpcs,安裝即可。
參考:https://marketplace.visualstudio.com/items?itemName=ikappas.phpcs
配置插件
由於項目使用的是系統的 phpcs,所以需要在 user setting 中配置可執行路徑和自己自定義的編寫風格
這時候我們去看看我們的代碼界面,是不是有了 phpcs 的提示了:
安裝 PhpStorm 插件
直接看圖,不需要做過多的說明了。
基本到此,phpcs 的插件就可以使用了。
版本檢測規範
我們希望在團隊項目代碼提交版本庫之前「pre-commit」就能檢測
出不符合「PSR-2」 標準的代碼文件。無論是 svn 或者 git,都能在「pre-commit」獲取提交版本庫的代碼文件,然後再利用「phpcs」去檢測每個文件是否符合規範。
svn
由於每個 svn 在服務端都有對應 hooks 文件夾,可以在「pre-commit」時,驗證代碼的規範,直接上文件,比較好理解:
這就是我們想要看到的效果了,無論 IDE 的實時提示,還是提交代碼時的檢測反饋,都會告訴我們哪裡格式不符合規範了。
git
這裡主要參考 WickedReports/phpcs-pre-commit-hook https://github.com/WickedReports/phpcs-pre-commit-hook 的寫法:
主要報錯在於:
60 行: output 函數
和 17 行:
好了,我們執行 git commit 試試:
接著我們把這幾個不規範的地方改了之後,同樣運行本地方法,返回結果:
我們再執行 git commit 試試:
完美了!
注:「svn」和「git」的區別在於,svn 是放在服務器上做「pre-commit」檢測的,而「git」是在本地本項目中的,這也是上文說的,如果你用 git 做版本庫,推薦你用「composer」項目安裝的方式安裝工具。
總結
本文以本地 Mac 系統和服務器 Linux 系統為安裝端,以 VSCode 和 PHPStorm 兩大主流 IDE 作為使用端,以 svn 和 git 為版本庫為例,較為完整而又系統流程的說一說「phpcs」的使用,希望對大家有所幫助!
最後留個小問題:如果你使用 Docker 和 git,怎麼做這一流程式檢測?
本文轉載自 葉梅樹,如需轉載,請向原作者發出申請,原作名稱《推薦一款 phpcs 插件規範 Laravel 代碼 (規範從本地寫代碼到版本控制)》
閱讀更多 異步社區 的文章