PRS編碼規範

2021-08-21 02:41:55 字數 3554 閱讀 1805

psr 是 php standard recommendation 的簡寫,即php推薦標準。

目前通過的規範有 psr-0(autoloading standard)、psr-1(basic coding standard)、psr-2(coding style guide)、psr-3(logger inte***ce)、psr-4(improved autoloading)。

psr 不是php官方標準,而是從如zend、symfony2等知名php專案中提煉出來的一系列標準,目前有越來越多的社群專案加入並遵循該標準。

php fig(framework interoperability group)框架可互用性小組是制定psr開發規範的組織。他們的目的在於以最低程度的限制制定乙個統一的標準,讓各個框架遵循統一的編碼規範。

********************psr-0(自動載入規範)********************===

psr-0(autoloading standard)類自動載入規範,該規範現已廢棄(deprecated),它將由psr-4替代。

1.乙個完全合格的命名空間和類名必須遵循以下結構 "\vendorname\namespace\classname"

2.每個命名空間必須有頂級的命名空間 "vendorname"

3.每個命名空間可以有任意多個子命名空間

4.每個命名空間在被檔案系統載入時必須被轉換為作業系統路徑分隔符 (directory_separator)

5.每個"_"字元在"類名"中被轉換為directory_separator。而在 psr-4 中使用下劃線沒有任何特殊含義

6.符合命名標準的命名空間和類名必須以".php"結尾來載入檔案

7.命名空間和類名可以由大小寫字母組成,但必須對大小寫敏感以保證多系統相容性

********************psr-1(基本**規範)********************===

psr-1(basic coding standard)基本**規範,用以確保共享的php**間具有較高程度的技術互通性。

1.php**原始檔必須以 <?php 或 <?= 標籤開始

2.php**原始檔必須使用不帶 bom 的 utf-8 編碼

3.乙個原始檔建議只用作定義類、函式、常量等宣告,或者其他產生從屬效應的操作(如:輸出資訊,修改配置檔案等)

4.命名空間以及類必須符合 psr 的自動載入規範:psr-0 或 psr-4

5.類的命名必須遵循 studlycaps 大寫開頭的駝峰式命名規範

6.類中的常量所有字母都必須大寫,單詞間用下劃線分隔

7.方法名必須符合 camelcase 式的小寫開頭駝峰式命名規範

* bom(byte order mark)是 unicode 標準的一部分,通常用於標記純文字位元組序(byte order),使得文字處理程式能夠識別讀入的檔案使用的 unicode 編碼(utf-8、utf-16、utf-32)。

* 從屬效應是指僅僅通過包含檔案,不直接宣告類、函式和常量而執行的邏輯操作。乙份php原始檔應該要麼就只包含不產生從屬效應的定義操作,要麼就包含只會產生從屬效應的邏輯操作,切勿同時包含兩者

********************psr-2(**風格規範)********************===

psr-2(coding style guide)**風格規範,通過制定一系列規範化php**的規則,以減少因代作者碼風格不同而造成的閱讀不便。

1.**必須遵循 psr-1 中的編碼規範

2.**必須使用4個空格來進行縮排,而非製表符(tab)

3.建議每行**字元數保持在80個以內,理論上不可多於120個,但不做硬性限制

4.每個 namespace 命名空間語句和 use 宣告語句塊後面必須插入乙個空白行

5.類的左花括號 "" 也必須在類主體下自成一行

6.方法的左花括號 "" 也必須於主體下自成一行

7.類的屬性和方法必須新增訪問修飾符(private、protected、public),abstract 以及 final 必須宣告在訪問修飾符之前,而 static 必須宣告在訪問修飾符之後(例:final public static)

8.在控制結構關鍵字的後面必須有乙個空格,而呼叫方法或函式時一定不能有(控制結構:if-else、switch-case、try-catch、while、foreach ...)

9.控制結構的左花括號 "" 必須在控制結構主體之後自成一行

10.控制結構的開始左括號之後,和結束右括號之前都不可以有空格

********************psr-3(日誌介面規範)********************===

psr-3(logger inte***ce)日誌介面規範,主要目的是為了讓日誌類庫通過接收乙個 loggerinte***ce 物件來記錄日誌資訊。

1.loggerinte***ce 介面對外定義了八個方法,分別用來記錄 rfc 5424 中定義的八個等級的日誌:debug、info、notice、warning、error、critical、alert、emergency

2.第九個方法 log(),第乙個引數為記錄等級。可使用乙個預先定義的等級常量作為引數來呼叫此方法,必須與直接呼叫以上八個方法具有相同的效果。如果傳入的等級常量沒有預先定義,則必須丟擲 psr\log\invalidargumentexception 型別的異常。不推薦使用自定義的日誌等級,除非你非常確定當前類庫對其有所支援。

********************psr-4(自動載入新規)********************===

psr-4(improved autoloading)本規範是關於自動載入對應類的相關規範,是 psr-0 自動載入規範的補充。

1.此處的「類」是乙個泛稱,它包含類、介面、traits 以及其他類似的結構

2.完全限定類名需要遵循以下結構:\《命名空間》(\《子命名空間》)*\《類名》

* 完全限定類名必須要有乙個頂級命名空間,被稱為 "vendor namespace";

* 完全限定類名可以有乙個或多個子命名空間;

* 完全限定類名必須有乙個終止類名;

* 完全限定類名中任意一部分中的下劃線都沒有特殊含義;

* 完全限定類名可以由任意大小寫字母組成;

* 完全限定類名必須以大小寫敏感的方式引用;

3.當根據完整的類名載入相應的檔案時:

* 完全限定類名中,連續的乙個或幾個子命名空間構成的命名空間字首(不包括頂級命名空間的分隔符),至少對應著至少乙個基礎目錄;

* 緊接命名空間字首後的子命名空間必須與相應的」檔案基目錄「相匹配,其中的命名空間分隔符將作為目錄分隔符;

* 終止類名對應乙個以 .php 結尾的檔案,檔名必須和終止類名大小寫匹配;

4.自動載入器(autoloader)的實現不能丟擲異常,不可引發任一級別錯誤,也不應該有返回值

php 編碼規範哪些 php編碼規範

1.php 必須以完整的形式來定界 即不要使用php 短標籤 且保證在關閉標籤後不要有任何空格。2.當乙個字串是純文字組成的時候 即不含有變數 則必須總是以單引號 作為定界符。例如 a example string 3.變數替換中的變數只允許用 變數名 的形式。例如 greeting hello n...

php 編碼規範哪些 PHP編碼規範

很多初學者對編碼規範不以為然,認為對程式開發沒有什麼幫助,甚至因為要遵循規範而影響了學習和開發的進度。或者因為經過一段時間的使用,已經形成了自己的一套風格,所以不願意去改變。這種想法是很危險的。如今的 web 開發,不再是乙個人就可以全部完成的,尤其是一些大型的專案,往往需要十幾人,甚至幾十人來共同...

php 編碼規範哪些 PHP 編碼規範

這是給小組制定的php編碼規範 該 php 編碼規範基本上是同 psr 規範的。有一部分的編碼規範 psr 中是建議,此編碼規範會強制要求。此編碼規範 是以 psr 1 psr 2 psr 2擴充套件 為藍本,並增加了相應的細節說明。通則基本編碼 php 必須使用 長標籤 或 短輸出標籤 一定不可使...