PHP-FIG PSR-1 # 基本編碼通訊協定,
本標準包含了 對 用於保障 PHP共用代碼的互通性 的標準編碼元素。
The key words “MUST 必須”, “MUST NOT 必須不”, “REQUIRED 需要”, “SHALL 將要”, “SHALL NOT 將不”, “SHOULD 應該”, “SHOULD NOT不應該”, “RECOMMENDED 推薦的”, “MAY 可以”, and “OPTIONAL 可選的” in this document are to be interpreted as described in RFC 2119.
概覽檔案PHP 標籤
PHP 代碼必須使用長標籤 < ? php ?> 或 echo短標籤 < ? = ? > ; 必須不能使用其他形態的標籤.
字元編碼
PHP代碼必須使用無BOM頭UTF-8編碼
邊際效應
一個檔案 (應該)要麼聲明符號(類、函數和常量等),不能引起任何邊際效應;要麼執行產生邊際效應的代碼。這兩種情況不能出現在一個檔案中。
“邊際效應” 執行與聲明類、函數、常量無關的邏輯。
“邊際效應” 包括但不限於: 產生輸出, 顯式的require或include, 串連外部服務, 修改ini配置, 發出 errors 或 exceptions, 修改全域或靜態變數, 讀寫檔案 等等.
以下是一個即聲明符號,又產生邊際效應的例子; 這是應該要避免的情況:
<?php// 邊際效應: 修改 ini 設定ini_set('error_reporting', E_ALL);// 邊際效應: 負載檔案include "file.php";// 邊際效應: 產生輸出echo "<html>\n";// 聲明function foo(){ // function body}
以下例子只包含聲明,無邊際效應;值得效仿:
<?php// declarationfunction foo(){ // function body}// 條件式聲明 不是邊際效應if (! function_exists('bar')) { function bar() { // function body }}
命名空間名和類名
命名空間名和類名必須遵循 “autoloading” PSR: [PSR-0, PSR-4].
這意味著每個檔案只能包含一個類, 並且至少有一層命名空間: 頂級的 vendor 名.
類名必須使用 StudlyCaps (首字母大寫駝峰) 聲明.
針對 PHP 5.3 及以後版本的代碼,必須使用正式的命名空間(5.3之前PHP不支援namespace).
例如:
<?php// PHP 5.3 and later:namespace Vendor\Model;class Foo{}Code written for 5.2.x and before SHOULD use the pseudo-namespacing convention of Vendor_prefixes on class names.<?php// PHP 5.2.x and earlier:class Vendor_Model_Foo{}
類常量、屬性和方法
這裡的“類”包括 classes, interfaces 和 traits.
4.1. 常量
類常量必須使用底線分割的大寫聲明。
<?phpnamespace Vendor\Model;class Foo{ const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01';}
屬性
本指南特意避免偏向 StudlyCaps,camelCase 和 $under_score 中任意一種屬性命名風格.
無論在用哪種命名風格,在合理的範圍內均應改保持一致。 範圍可以使 vendor-level, package-level, class-level, 或 method-level。
方法
方法名必須使用駝峰 camelCase().