PSR0-PSR4
https://github.com/PizzaLiu/PHP-FIG
PSR(Proposing a Standards Recommondation 建議重新修訂標準), 即PHP編碼規(guī)范,目前PSR更新為2016.5.26的PSR4,后續(xù)我們將持續(xù)關(guān)注。
PSR(Proposing a Standards Recommendation),PHP編碼規(guī)范:
PHP代碼必須使用標簽:<?php;
代碼編碼只可使用不帶BOM的UTF-8編碼;
從屬效應(yīng):一份PHP文件應(yīng)該要么就只定義新的聲明,比如類、函數(shù)、常量等不產(chǎn)生從屬效應(yīng)的操作,要不就是只會產(chǎn)生從屬效應(yīng)【僅僅通過包含文件,不直接聲明類、 函數(shù)和常量等,而執(zhí)行的邏輯操作】的邏輯操作,而不應(yīng)該同時具有兩者。
命名空間以及類名必須遵循PSR-4;
常量所有字母大寫,詞間以下劃線分割;類屬性可駝峰式,可下劃線,可小寫駝峰式;方法名必須符合小寫駝峰式開頭的命名規(guī)范;
代碼必須符合PSR-1中所有規(guī)范;
所有PHP文件必須以一個空白行作為結(jié)束;
純PHP代碼文件必須省略最后的 ?>標簽;
行的長度一定不能有硬性的約束;【80/120】;非空行后一定不能有多余空格字符;每行一定不能存在多于一條語句;
代碼縮進必須使用4個空格字符縮進,一定不能用tab鍵;
PHP中所有關(guān)鍵字必須小寫,包括true false null;
Namespace 聲明后必須插入一個空白行,所有use必須在namespace后聲明,use聲明語句塊后必須要有一個空白行;
關(guān)鍵詞extends、implements必須寫在類名稱同一行;類開始和結(jié)束花括號必須在類代碼中獨占一行;
每個屬性和方法必須添加訪問修飾符;方法名稱后一定不能有空格,其開始花括號和結(jié)束符號必須獨占一行;參數(shù)左、右括號前一定不能有空格;參數(shù)列表中每個逗號后必須有一個空格,而逗號前一定不能有空格,有默認值的參數(shù)一定放到參數(shù)末尾;
類的屬性和方法必須添加訪問修飾符(private、protected以及public),abstract以及final必須聲明在訪問修飾符之前,而static必須聲明在訪問修飾符之后;
本文制定了日志類庫的通用接口規(guī),是為了讓日志類庫以簡單通用的方式,通過接收一個Psr\Log\LoggerInterface對象,來記錄日志信息。
文件路徑載入規(guī)范,autoload:類名==》文件名==》文件磁盤路徑;
此處類泛指所有的class類、接口、traits可復(fù)用代碼塊以及其他類似結(jié)構(gòu);
一個完整的類名具有以下結(jié)構(gòu):
\<命名空間>(\<子命名空間>)*\<類名>
i:完整的類名必須有一個頂級命名空間,被稱為“vendor namespace”;
ii:完整的類名可以有一個或多個子命名空間;
iii:完整的類名必須有一個最終的類名【大小寫敏感】;
當根據(jù)完整類名文件加載相應(yīng)的文件:
I:完整的類名中,去掉最前面的命名空間分隔符,前面連續(xù)的一個或多個命名空間和子命名空間,作為“命名空間前綴”,其必須與至少一個“文件基目錄”相對應(yīng);
ii:緊挨命名空間前綴后的子命名空間必須與相應(yīng)的“文件基目錄”相匹配,其中命名空間分隔符將作為目錄分隔符。
iii:末尾的類名必須與對應(yīng)的以.php為后綴的文件同名。
iiii:自動加載器(autoloader)的實現(xiàn)一定不能拋出異常、一定不能觸發(fā)任一級別的錯誤信息以及不應(yīng)該有返回值。
總結(jié)
- 上一篇: 奥迪三位四通反牙螺丝有问题会亮发动机故障
- 下一篇: unknown directive导致的