因爲PHP的靈活性,不少人寫起代碼來也不講求一個好的代碼規範,使得本就靈活的PHP代碼看起來很亂,其實PSR規範中的PSR-1和PSR-2已經定義了在PHP編碼中的一些規範,只要咱們好好遵照這些規範,即便是使用靈活的腳本語言,也能寫出很是漂亮工整的代碼。首先咱們來看一下已經經過的PSR規範,而後大體講解一下PSR-1和PSR-2規範的一些具體要求。php
已經過的PSR
PSR編號 | 名稱 | 說明 |
---|---|---|
1 | 基礎編碼規範 | 關於PHP標籤和基本命名約定等基礎的規範 |
2 | 編碼風格規範 | 關於大括號的位置和參數列表等編碼格式的規定 |
3 | 日誌接口規範 | 關於日誌級別以及記錄日誌的行爲的規定 |
4 | 自動加載規範 | 關於類和命名空間的命名約定,以及它們與文件系統間映射的規定 |
6 | 緩存接口規範 | 關於緩存管理的規定,其中包括數據類型、緩存項的生存週期、錯誤處理等 |
7 | HTTP消息接口規範 | 關於HTTP請求和響應的約定 |
PSR-1基礎編碼規範
- 開閉標籤 首先,PHP代碼必須以<?php或<?=標籤開始。換言之,咱們不該該再使用短標籤<?或其它變化形式。
- 反作用 PHP文件要麼聲明類、接口、函數等,要麼執行邏輯操做(如讀寫文件或向瀏覽器發送輸出),但不該該同時兼具二者。
- 命名 類的命名必須遵照大寫開頭的駝峯式命名規範。換言之,類名應當以大寫字母開頭。屬性的命名方式沒有強制要求,但應該保持一致。方法名稱必須符合小寫開頭的駝峯式命名規範。類常量中的全部字母必須大寫,單詞之間如下劃線分隔。
PSR-2編碼風格規範
-
PSR-1要求PHP代碼以<?php開頭。PSR-2規定,純PHP文件不該該以一個?>標籤結束,而應該以一個空白行結束。html
-
namespace聲明後應該插入一個空白行,use聲明語句塊後也應該要有一個空白行。不要在同一行代碼中進行屢次use聲明。瀏覽器
-
類的開始和結束 class關鍵字、類名,以及extends和implements關鍵字必須在同一行中。若是一個類實現了多個接口,那麼這些接口名能夠在類聲明的同一行中,也能夠各佔一行。若是選擇將這些接口名放在多行中,那麼第一個接口名必須自成一行,而不是跟在implements關鍵字後面。類的開始花括號({)應該寫在函數聲明後自成一行,結束花括號(})也應該寫在類體後自成一行。也就是說,類聲明看起來以下所示緩存
class EarthGame extends Game implements Playable, Savable { //類體 }
也能夠將類名與類聲明放在同一行中。編輯器
class EarthGame extends Game implements Playble, Savable { //類體 }
-
屬性聲明 每一個屬性都必須有訪問修飾符(public、private或protected)。不能夠使用關鍵字var聲明屬性。PSR-1中已經涵蓋了屬性名的規範:能夠使用下劃線、小寫駝峯式命名或大寫駝峯式命名方式,但應該保持一致。(我的推薦屬性採用小寫式駝峯)函數
-
方法的開始和結束 全部方法必須具備訪問修飾符(public、private或protected)。訪問修飾符必須在abstract或final以後,static以前。具備默認值得方法參數應該放在參數列表的末尾。編碼
-
單行聲明 方法的開始花括號({)應該寫在方法名後自成一行,結束花括號(})也應該寫在方法體後自成一行(直接跟在方法代碼以後)。方法參數列表不該該以空格開始或結束(即應該緊貼包裹着它們的圓括號)。對於每一個參數,參數名(或默認值)後面應該有一個逗號,且逗號後面有一個空格。這聽起來彷佛有些複雜,以下所示:spa
final public static function generateTile(int $diamondCount, bool $polluted = false) { //方法體 }
-
* 多行聲明 若是方法有不少參數,那麼單行方法聲明是不實際的。此時咱們能夠分割參數列表,以便將每一個參數(包括類型、參數變量、默認值和逗號)單獨放在縮進的一行中。這種狀況下,結束圓括號應該放在參數列表後面一行中,並與方法聲明的開始位置對齊。開始花括號({)應該在同一行的結束圓括號以後,以空格分隔。方法體應該重新的一行開始。一樣,這聽起來彷佛很複雜,如下示例應該能幫助你理解這條規定。 ```php public function __construct( int $size, string $name, bool $warparound = false, bool $aliens = false ) { //方法體 } ``` 6. 行與縮進 代碼應該使用4個空格符來縮進,而不是使用製表符。咱們能夠檢查編輯器設置,將其設置爲按下Tab鍵時使用4個空格而不是製表符。每行代碼的長度不該該超過120個字符。 7. 方法與函數調用 方法名稱和開始圓括號之間不能有空格。方法調用中的參數列表的規則與方法聲明中的參數列表規則相同。換言之,對於單行調用,開始圓括號後或結束圓括號前不能有空格。每一個參數以後應該緊跟一個逗號,下一個參數前應該有一個空格。若是須要使用多行代碼進行方法調用,那麼每一個參數應該自成一行並縮進,並且結束圓括號也應該自成一行。 ```php $earthGanme = new EarthGame( 5, 'earth', true, true ); $earthGame::generateTile(5, true);
-
流程控制 流程控制關鍵字(if、for、while等)後面必須緊跟一個空格。可是,開始圓括號後不能有空格。一樣,結束圓括號前不能有空格。所以內容應該緊貼在括號內的。與類和(單行)函數聲明相比,流程控制代碼的開始花括號應該與結束圓括號在同一行。結束花括號應該自成一行。如下是一個簡單的示例。日誌
$title = []; for ($x = 0; $x < $diamondCount; $x++) { if ($polluted) { $title[] = new PollutionDecorator(new DiamondDecorator(new Plains())); } else { $title[] = new DiamondDecorator(new Plains()); } }
注意if和for以後的空格。for和if語句與圓括號在同一行,並且它們的結束圓括號後都有一個空格,而後是流程控制體的開始花括號。代碼規範
原文出處:https://www.cnblogs.com/itbsl/p/11287149.html