【PHP】PSR簡要規範

來源:互聯網
上載者:User

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 Vendor\Package;
  2. use FooInterface;
  3. use BarClass as Bar;
  4. use OtherVendor\OtherPackage\BazClass;
  5. class Foo extends Bar implements FooInterface
  6. {
  7. public function sampleFunction($a, $b = null)
  8. {
  9. if ($a === $b) {
  10. 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
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.