PSR:PHP編碼規范(Proposing a Standards Recommendation)
只貼出一些需要注意的,后續的版本必須遵循前面的所有未廢棄的版本
PSR1
- PHP代碼中應該只定義類、函數、常量等聲明,或其他會產生 從屬效應 的操作(如:生成文件輸出以及修改.ini配置文件等),二者只能選其一
- PHP 5.3及以后版本的代碼必須使用正式的命名空間(偽命名空間是用_來分隔類名),類的命名必須是大寫開頭的駝峰命名法
- 類(此處指代所有的類、接口、性狀traits):類常量所有字母必須大寫,詞間用_分隔;類的屬性不做強制要求,可用大駝峰、小駝峰或下劃線分隔,但必須保持一致;類方法使用小駝峰
PSR2
- 縮進使用4個空格
- 每行字符數應該軟性保持在80個以內,理論上一定不可多于120個,但一定不能有硬性限制
- 每個namespace命名空間聲明語句 和 use聲明語句塊(不是每一條都要空行) 后面,必須插入一個空白行
- 類和方法的花括號自成一行(控制結構不同,后面說)
- 類的屬性和方法必須添加訪問修飾符(protected, private, public),且abstract, final必須在訪問修飾符之前,而static必須聲明在訪問修飾符之后
- 控制結構的關鍵字后必須有一個空格符,調用方法或函數的時候則一定不能有
- 控制結構的開始花括號寫在聲明的同一行,結束花括號自成一行,且開始花括號后 和 結束花括號前,一定不能有空格符
- 所有PHP文件必須使用Unix LF作為行的結束符(\n),必須以一個空白行作為結束,純PHP代碼文件必須省略最后的?>
- 每行一定不能存在多于一條語句,非空行后一定不能有多余的空格符
- PHP所有關鍵字必須全部小寫,包括true, false, null也是
- 類、接口、性狀的關鍵字extends和implements必須寫在類名稱的同一行
- 每條語句一定不可以定義超過一個屬性
- 參數列表可以分列成多行,這樣,包括第一個參數在內的每個參數都必須單獨成行,同時結束括號以及方法開始的花括號必須寫在單獨的同一行,中間用空格分隔
- PSR2補充:使用一個或多個多行參數,如數組或匿名參數,將[留在第一行,將]留在與下一個參數同一行
PSR3
- 日志接口規范,TODO,使用到的時候再補充
PSR4
以下的類泛指所有的class類、接口、traits可復用代碼塊以及其它類似結構
- 一個完整的類名需要有以下的結構:<命名空間>(<子命名空間>)*<類名>
- 完整的類名中,去掉最前面的命名空間分隔符,前面連續的一個或多個命名空間和子命名空間,作為“命名空間前綴”,其必須與至少一個“文件基目錄”相對應
- 緊接命名空間前綴后的子命名空間必須與相應的”文件基目錄“相匹配,其中的命名空間分隔符將作為目錄分隔符
- 末尾的類名必須與對應的以 .php 為后綴的文件同名
- 自動加載器(autoloader)的實現一定不能拋出異常、一定不能觸發任一級別的錯誤信息以及不應該有返回值