php psr編碼規範

2021-08-21 05:12:05 字數 2446 閱讀 9470

背景:

psr發明者和規範者:php-fig,它的**是:www.php-fig.org。就是這個聯盟組織發明和創造了psr-[0-4]規範

fig 是 framework interoperability group(框架可互用性小組)的縮寫,由幾位開源框架的開發者成立於 2009 年,從那開始也選取了很多其他成員進來,雖然不是 「官方」 組織,但也代表了社群中不小的一塊。

組織的目的在於:以最低程度的限制,來統一各個專案的編碼規範,避免各家自行發展的風格阻礙了程式設計師開發的困擾,於是大夥發明和總結了psr,psr是proposing a standards recommendation(提出標準建議)的縮寫,截止到目前為止,總共有5套psr規範,分別是:

psr-0

(autoloading standard) 自動載入標準

psr-1

(basic coding standard) 基礎編碼標準

psr-2

(coding style guide) 編碼風格嚮導

psr-3

(logger inte***ce) 日誌介面

psr-4 (improved autoloading) 自動載入的增強版,可以替換掉psr-0了。

psr-0強制性要求幾點:(已過時)

乙個完全合格的namespace和class必須符合這樣的結構:「\< vendor name>(< namespace>)*< class name>」

每個namespace必須有乙個頂層的namespace("vendor name"提供者名字)

每個namespace可以有多個子namespace

當從檔案系統中載入時,每個namespace的分隔符(/)要轉換成 directory_separator(作業系統路徑分隔符)

在類名中,每個下劃線(_)符號要轉換成directory_separator(作業系統路徑分隔符)。在namespace中,下劃線(_)符號是沒有(特殊)意義的。

當從檔案系統中載入時,合格的namespace和class一定是以 .php 結尾的

verdor name,namespaces,class名可以由大小寫字母組合而成(大小寫敏感的)

php原始檔必須只使用 <?php 和 <?= 這兩種標籤。

原始檔中php**的編碼格式必須是不帶位元組順序標記(bom)的utf-8。

乙個原始檔建議只用來做宣告(類(class),函式(function),常量(constant)等)或者只用來做一些引起***的操作(例如:輸出資訊,修改.ini配置等),但不建議同時做這兩件事。

命名空間(namespace)和類(class) 必須遵守psr-0標準。

類名(class name) 必須使用駱駝式(studlycaps)寫法 (注:駝峰式(camecase)的一種變種,後文將直接用studlycaps表示)。

類(class)中的常量必須只由大寫字母和下劃線(_)組成。

方法名(method name) 必須使用駝峰式(camecase)寫法。

**必須使用四個空格符而不是tab鍵進行縮排。

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

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

類的開始花名號()也必須在函式主體後自成一行

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

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

控制結構的開始花括號()必須寫在主體後自成一行。

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

乙個完整的類名需要具有以下結構

\《命名空間》(\《子命名空間》)*\《類名》

1.完整的類名必須要有乙個頂級命名空間,被稱為「vendor namespace」

2.完成的類名可以有乙個或多個子命名空間

3.完整的類名必須有乙個最終的類名

4.完整的類名中任意一部分中的下劃線都是沒有特殊意義的

5.完整的類名可以由任意大小寫字母組成

6.所有類名都必須是大小寫敏感的

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

1.完整的類名中,去掉最前面的命名空間分隔符,前面連續的乙個或多個命名空間和子命名空間,作為「命名空間字首」,其必須與至少乙個「檔案基目錄」相對應。

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

3.末尾的類名必須與對應的.php為字尾的檔案同名

4.自動載入器(autoloader)的實現一定不能丟擲異常,一定不能觸發任一級別的錯誤資訊以及不應該有返回值。

PHP PSR簡要規範

備註 使用空格而不是tab鍵縮排的好處在於,避免在比較 差異 打補丁 重閱 以及注釋時產生混淆。並且,使用空格縮排,讓對齊變得更方便。命名空間 子命名空間 類名 完整的類名必須要有乙個頂級命名空間,被稱為 vendor namespace 完整的類名可以有乙個或多個子命名空間 完整的類名必須有乙個最...

PHP PSR 0 自動載入規範

此規範已被棄用 本規範已於2014年10月21日被標記為棄用,目前最新的替代規範為 psr 4 本文是為自動載入器 autoloader 實現通用自動載入,所需要遵循的編碼規範。以上是使用通用自動載入必須遵循的最低規範標準,可通過以下的示例函式 splclassloader 載入 php 5.3 的...

PHP PSR 3 日誌介面規範

本文制定了日誌類庫的通用介面規範。本規範的主要目的,是為了讓日誌類庫以簡單通用的方式,通過接收乙個psr log loggerinte ce物件,來記錄日誌資訊。框架以及cms內容管理系統如有需要,可以對此介面進行擴充套件,但需遵循本規範,這才能保證在使用第三方的類庫檔案時,日誌介面仍能正常對接。本...