https://github.com/PizzaLiu/PHP-FIG
PSR(Proposing a Standards Recommondation), 即PHP編碼規(guī)范,目前PSR更新為2016.5.26的PSR4,后續(xù)我們將持續(xù)關注。
PSR(Proposing a Standards Recommendation)只锻,PHP編碼規(guī)范:
1. PSR-0(已棄用)贷揽;
2. PSR-1概覽:
PHP代碼必須使用標簽:<?php下隧;
代碼編碼只可使用不帶BOM的UTF-8編碼淳衙;
從屬效應:一份PHP文件應該要么就只定義新的聲明,比如類喉脖、函數(shù)、常量等不產(chǎn)生從屬效應的操作抑月,要不就是只會產(chǎn)生從屬效應【僅僅通過包含文件树叽,不直接聲明類、 函數(shù)和常量等谦絮,而執(zhí)行的邏輯操作】的邏輯操作题诵,而不應該同時具有兩者。
命名空間以及類名必須遵循PSR-4层皱;
常量所有字母大寫性锭,詞間以下劃線分割;類屬性可駝峰式叫胖,可下劃線草冈,可小寫駝峰式;方法名必須符合小寫駝峰式開頭的命名規(guī)范瓮增;
3. PSR-2概覽:
代碼必須符合PSR-1中所有規(guī)范怎棱;
所有PHP文件必須以一個空白行作為結(jié)束;
純PHP代碼文件必須省略最后的 ?>標簽绷跑;
行的長度一定不能有硬性的約束拳恋;【80/120】;非空行后一定不能有多余空格字符你踩;每行一定不能存在多于一條語句诅岩;
代碼縮進必須使用4個空格字符縮進讳苦,一定不能用tab鍵;
PHP中所有關鍵字必須小寫吩谦,包括true false null;
Namespace 聲明后必須插入一個空白行鸳谜,所有use必須在namespace后聲明,use聲明語句塊后必須要有一個空白行式廷;
關鍵詞extends咐扭、implements必須寫在類名稱同一行;類開始和結(jié)束花括號必須在類代碼中獨占一行滑废;
每個屬性和方法必須添加訪問修飾符蝗肪;方法名稱后一定不能有空格,其開始花括號和結(jié)束符號必須獨占一行蠕趁;參數(shù)左薛闪、右括號前一定不能有空格;參數(shù)列表中每個逗號后必須有一個空格俺陋,而逗號前一定不能有空格豁延,有默認值的參數(shù)一定放到參數(shù)末尾;
類的屬性和方法必須添加訪問修飾符(private腊状、protected以及public)诱咏,abstract以及final必須聲明在訪問修飾符之前,而static必須聲明在訪問修飾符之后缴挖;
4. PSR-3概覽:
本文制定了日志類庫的通用接口規(guī)袋狞,是為了讓日志類庫以簡單通用的方式,通過接收一個Psr\Log\LoggerInterface對象映屋,來記錄日志信息苟鸯。
5. PSR-4 概覽:
文件路徑載入規(guī)范,autoload:類名==》文件名==》文件磁盤路徑棚点;
此處類泛指所有的class類倔毙、接口、traits可復用代碼塊以及其他類似結(jié)構(gòu)乙濒;
一個完整的類名具有以下結(jié)構(gòu):
\<命名空間>(\<子命名空間>)*\<類名>
i:完整的類名必須有一個頂級命名空間陕赃,被稱為“vendor namespace”;
ii:完整的類名可以有一個或多個子命名空間颁股;
iii:完整的類名必須有一個最終的類名【大小寫敏感】么库;
當根據(jù)完整類名文件加載相應的文件:
I:完整的類名中,去掉最前面的命名空間分隔符甘有,前面連續(xù)的一個或多個命名空間和子命名空間诉儒,作為“命名空間前綴”,其必須與至少一個“文件基目錄”相對應亏掀;
ii:緊挨命名空間前綴后的子命名空間必須與相應的“文件基目錄”相匹配忱反,其中命名空間分隔符將作為目錄分隔符泛释。
iii:末尾的類名必須與對應的以.php為后綴的文件同名。
iiii:自動加載器(autoloader)的實現(xiàn)一定不能拋出異常温算、一定不能觸發(fā)任一級別的錯誤信息以及不應該有返回值怜校。