基于psr规范php框架,PHP-PSR规范
PSR 是 PHP Standard Recommendations 的簡寫,由?PHP FIG?組織制定的 PHP 規范,是 PHP 開發的實踐標準。
PHP FIG,FIG 是 Framework Interoperability Group(框架可互用性小組)的縮寫,由幾位開源框架的開發者成立于 2009 年,從那開始也選取了很多其他成員進來(包括但不限于?Laravel,?Joomla,?Drupal,?Composer,?Phalcon,?Slim,?Symfony,?Zend Framework?等),雖然不是「官方」組織,但也代表了大部分的 PHP 社區。
項目的目的在于:通過框架作者或者框架的代表之間討論,以最低程度的限制,制定一個協作標準,各個框架遵循統一的編碼規范,避免各家自行發展的風格阻礙了 PHP 的發展,解決這個程序設計師由來已久的困擾。
目前已表決通過了 6 套標準,已經得到大部分 PHP 框架的支持和認可。
==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 Interface)日志接口規范,主要目的是為了讓日志類庫通過接收一個 LoggerInterface 對象來記錄日志信息。
1.LoggerInterface 接口對外定義了八個方法,分別用來記錄 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)的實現不能拋出異常,不可引發任一級別錯誤,也不應該有返回值
總結
以上是生活随笔為你收集整理的基于psr规范php框架,PHP-PSR规范的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝中的基金安全吗
- 下一篇: yum 卸载php及依赖包,yum使用指