2014-01-22 47 views
7

我的代碼庫符合(或應該)Zend編碼標準。我一直在用PHP_CodeSniffer來使用Zend標準,但是我看到討論說Zend標準的phpcs是不一致的,沒有維護,並且不一定堅持Zend編碼標準。所以我正在尋找一種更一致,最新且廣泛使用的標準。我應該使用什麼?什麼是使用PHP_CodeSniffer的好標準?

我聽說過「Squiz」,「PEAR」和「PSR2」,但我對它們一無所知。他們之間有什麼不同?

回答

15

PEAR標準是最基本的,也是大多數其他標準的演變標準。它已經存在了很長一段時間,但在一段時間內還沒有更新。它最初是由PEAR包(如PHP_CodeSniffer)使用的,我認爲這是一個很好的初學者標準。

The PEAR standard contains 26 main checks.

的PSR2標準是相對較新的,並已通過PHP-圖開發的。它被許多框架以各種形式採用。我認爲如果你想堅持一個,而且你真的不知道該選什麼,這是一個標準選擇。

The PSR2 standard contains 40 main checks.

的Squiz標準是一個我在工作中使用。我開發了PHP_CodeSniffer,所以我使用的標準非常嚴格也許並不奇怪。這個也包含對JS和CSS文件的檢查,因爲它用在我們的大型Web應用程序上。這絕對不是初學者的標準,它會定期變化。但它包含許多可以納入自定義編碼標準的良好檢查。

The Squiz standard contains 124 main checks.

所以,我對你的建議是嘗試了PSR2標準,看你怎麼走。如果你開始覺得它不能以小的方式爲你工作,你可以看看創建自己的ruleset.xml文件來創建自己的自定義編碼標準。這裏有關於這個過程的文檔:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml

+1

謝謝你的答案! PSR2是PEAR的超集 - 意味着如果我的代碼在本地通過PSR2,它仍然會在構建服務器上傳遞PEAR?或者在PEAR中有沒有與PSR2中的相同的檢查? –

+1

PSR2 *不是* PEAR的超集。現在想起了一個很大的衝突,這就是SWITCH語句縮進的方式。 PEAR以我沒有看到任何其他標準的方式縮進SWITCH語句,所以它與所有內容幾乎相沖突。可能還有更多,但我認爲如果你嘗試並堅持這兩者,那將會讓你失望。 –

0

有一些小的差異,它主要是你如何使用,或者什麼代碼標準由其他人強制執行的問題。

PSR2已被大多數框架採用。