前言
本文為《現代 PHP》一書的學習筆記。
環境
- Windows 10
- XAMPP 3.2.2
PHP-FIG
2009 年,數個 PHP 框架的開發者意識到,如何改善框架間溝通以及效率的重要性。為了讓 PHP 框架之間可以共享低耦合度類別來實現資源共享,PHP 需要標準。
這些 PHP 框架的開發者創立了 PHP Framework Interoperability Group(PHP-FIG),目的是「找出專案中的共通性並且找到一個可以共事的方法」。
框架互通性
PHP-FIG 的任務是框架的互通性,框架互通性表示框架之間藉由介面、自動載入和風格來合作。
自動載入
PHP 框架藉由自動載入來合作,自動載入是個執行時期的程序,PHP 類別在有需要時被 PHP 直譯器自動定位並載入。
風格
程式碼風格決定了空格、大小寫以及括號的擺放位置,標準的程式碼風格幫助所有的團隊成員迅速了解同一個程式庫,無論其原先的作者是誰。
PSR
PSR 是 PHP Standards Recommendations 的縮寫。
PHP-FIG 至少已經通過 6 套標準:
- PSR-1:基本程式碼風格
- PSR-2:嚴厲程式碼風格
- PSR-3:紀錄器
- PSR-4:自動載入
- PSR-6:快取介面
- PSR-7:HTTP 消息介面
PSR-1:基本程式碼風格
PHP 標籤
必須使用 <?PHP ?>
或 <?= ?>
標籤包覆 PHP 程式碼。
編碼
所有的 PHP 檔案必須以沒有位元組順序記號(BOM)的 UTF-8 字元編碼。
目的
每個 PHP 檔案可以被用來定義符號(一個類別、特徵機制、函式、常數等)或執行一個有副作用的動作(產生輸出結果或處理資料)。
自動載入器
PHP 名稱空間和類別必須支援 PSR-4 自動載入器標準。
類別名稱
PHP 類別名稱必須使用共通的 CamelCase
格式,例如:CoffeeGrinder、CoffeeBean。
常數名稱
PHP 常數名稱必須全部大寫,使用底線區分單字,例如 LET_OUR_POWERS_COMBINE、GREAT_SCOTT。
方法名稱
PHP 方法名稱必須使用共通的 camelCase
格式,例如:phpIsAwesome、iLoveBacon。
PSR-2:嚴厲程式碼風格
縮排
必須使用 4
個空白字元來縮排。
檔案和行句
- 檔案的最後應該保有一行空白行。
- 檔案不能包含結尾
?>
標籤,這是為了避免在之後加了一個空白行使得輸出造成錯誤。 - 每一行程式碼不應超過
80
個字元。 - 每一行程式碼的結尾不能有空白字元。
關鍵字
PHP 關鍵字一律使用小寫,如 true
、false
和 null
等。
名稱空間
每一個名稱空間宣告都必須接上一行空白行,使用 use
宣告時亦同。
1 | namespace My\Component; |
類別
類別定義的起始括號必須要在類別名稱的下一行,而 extends
和 implements
關鍵字必須跟類別名稱寫在同一行。
1 | namespace My\App; |
方法
方法定義的起始括號必須要在類別名稱的下一行,而參數(除了最後一個)的後面緊接著一個逗號和一個空白字元。
1 | namespace Animals; |
能見度
必須為每一個類別的屬性和方法定義能見度,分別是 public
、protected
或 private
。
1 | namespace Animals; |
控制流程
所有的控制流程關鍵字必須接上一個空白字元,起始括號和控制流程關鍵字必須保持在同一樣。
1 | $gorilla = new \Animals\Gorilla; |
參考資料
- Josh Lockhart(2015)。現代 PHP。台北市:碁峯資訊。