【PHP】PSR簡要規範

WBOY
發布: 2016-07-23 08:54:45
原創
1211 人瀏覽過

PSR是一系列關於php開發的規範,分有好幾個版本,自己學的也較為膚淺,但還是希望能時常查看規範,為了方便記憶和遵循,我把關鍵字為必須的撿拾出來,做個簡單必要規範的記錄。 (就是個搬磚的。。。)
https://github.com/PizzaLiu/PHP-FIG
http://segmentfault.com/a/1190000002521577

官方發布文件版本

PSR-0(已棄用)

PSR-1 基本程式碼規格

PSR-2 程式碼風格規格

PSR-2 補充文件

PSR-3 日誌介面規格

PSR-4 自動載入

PSR-5和PSR-6投票還未通過

必須 PSR-1 基本程式碼規範

php程式碼檔案必以

PHP代碼檔案必須以 不含BOM的 UTF-8 編碼;

命名空間以及類別必須符合 PSR 的自動載入規範:PSR-0 或 PSR-4 中的一個;

類別的命名必須遵循 StudlyCaps 大寫開頭的駝峰命名規範;

類別中的常數所有字母都必須大寫,單字間用底線分隔;

方法名稱必須符合 camelCase 式的小寫開頭駝峰命名規範。

PHP程式碼必須使用 長標籤 或 = ?> 短輸出標籤; 一定不可使用其它自訂標籤。

命名空間以及類別的命名必須遵循 PSR-0.

PHP 5.3及以後版本的程式碼必須使用正式的命名空間。

每個類別獨立為一個文件,且命名空間至少有一個層次:頂層的組織名稱(vendor name)

PSR-2 程式碼風格規範

代碼必須遵循 PSR-1 中的編碼規範 。

程式碼必須使用4個空格符而不是 tab鍵 進行縮排。

備註: 使用空格而不是tab鍵縮排的好處在於, 避免在比較程式碼差異、打補丁、重閱程式碼以及註解時產生混淆。 並且,使用空格縮排,讓對齊變得更方便。

每個 namespace 命名空間宣告語句和 use 宣告語句區塊後面,必須插入一個空白行。

類別的開始花括號({)必須寫在函數宣告後自成一行,結束花括號(})也必須寫在函數主體後面自成一行。

方法的開始花括號({)必須寫在函數宣告後自成一行,結束花括號(})也必須寫在函數主體後面自成一行。

類別的屬性和方法必須 新增存取修飾符(private、protected 以及 public), abstract 以及 final 必須聲明在存取修飾符之前,而 static 必須聲明在存取修飾符之後。

控制結構的關鍵字後必須要有一個空格符,而呼叫方法或函數時則一定不能有。

控制結構的開始花括號({)必須寫在宣告的同一行,而結束花括號(})必須寫在主體後面自成一行。

控制結構的開始左括號後和結束右括號前,都一定不能有空格符號。

所有PHP檔案必須使用Unix LF (linefeed)作為行的結束符號。

所有PHP檔案必須以一個空白行作為結束。

純PHP程式碼檔案必須省略最後的 ?> 結束標籤。

每行一定不能存在多於一條語句。

非空白行後一定不能有多餘的空格符。

PHP所有 關鍵字必須全部小寫。

常數 true 、false 和 null 也必須全部小寫。

PSR-3 日誌介面規範 PSR-4 自動載入規範

一個完整的類別名稱需具有以下結構:

  1. ()*
  2. 完整的類​​別名必須要有一個頂級命名空間,被稱為"vendor namespace";
  3. 完整的類​​別名稱可以有一個或多個子命名空間;
  4. 完整的類​​別名稱必須有一個最終的類別名稱;
  5. 完整的類​​別名稱中任一部分的下滑線都是沒有特殊意義的;
  6. 完整的類​​別名稱可以由任意大小寫字母組成;
  7. 所有類別名稱都必須是大小寫敏感的。
複製程式碼

當依照完整的類別名稱載入對應的檔案

  1. 完整的類​​別名稱中,去掉最前面的命名空間分隔符,前面連續的一個或多個命名空間和子命名空間,作為“命名空間前綴”,其必須與至少一個“文件基目錄”相對應;
  2. 緊接命名空間前綴後的子命名空間必須與對應的」檔案基底目錄「相匹配,其中的命名空間分隔符號將作為目錄分隔符。
  3. 末尾的類別名稱必須與對應的以 .php 為後綴的檔案同名。
  4. 自動載入器(autoloader)的實作一定不能拋出例外、一定不能觸發任一層級的錯誤訊息、不應該有回傳值。
複製程式碼
建議(更多請查看詳細文件) PSR-1

PHP程式碼應該只定義類別、函數、常數等聲明,或其他會產生從屬效應的操作(如:產生檔案輸出以及修改.ini設定檔等),二者只能選其一;

類別的屬性命名可以遵循大寫開頭的駝峰式($StudlyCaps)、小寫開頭的駝峰式($camelCase) 又或者是下劃線分隔式($under_score),本規範不做強制要求,但無論遵循哪種命名方式,都應該在一定的範圍內保持一致。

PSR-2

每行的字元數應該軟性保持在80個之內, 理論上一定不可多於120個, 但一定不能有硬性限制。

空行可以使得閱讀程式碼更加方便以及有助於程式碼的分塊。

程式碼範例 PSR-2
  1. namespace VendorPackage;
  2. use FooInterface;
  3. use BarClass as Bar;
  4. use FooInterface;
  5. use BarClass as Bar;class Foo extends Bar implements FooInterface
  6. {
  7. public function sampleFunction($a, $b = null)
  8. {
  9. if ($a === $b) {
  10. bar🎜> bar ();
  11. } elseif ($a > $b) {
  12. $foo->bar($arg1);
  13. } else {
  14. BazClass::bar($arg2, $arg3);
  15. }
  16. }
  17. final public static function bar()
  18. {
  19. // method body
  20. }
  21. }
複製🎜> }}
複製🎜>代碼
PHP, PSR


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板