標籤:檔案 標記 PHP代碼 首碼 產生 修改 https standard 函數
基本代碼規範
RFC 2119中的
必須(MUST)
,
不可(MUST NOT),
建議(SHOULD),
不建議(SHOULD NOT),
可以/可能(MAY)等關鍵詞將在本節用來做一些解釋性的描述。
1. 概述
源檔案必須只使用 <?php 和 <?= 這兩種標籤。
源檔案中php代碼的編碼格式 必須 只使用不帶字 節順序標記(BOM) 的 UTF-8。
一個源檔案建議只用來做聲明(類(class),函數(function),常量(constant)等)或者只用來做一些引起副作用的操作(例如:輸出資訊,修改.ini配置等),但不建議同時做這兩件事。
命名空間(namespace)和類(class) 必須遵守PSR-0標準。
類名(class name) 必須使用駱駝式(StudlyCaps)寫法 (譯者註:駝峰式(cameCase)的一種變種,後文將直接用StudlyCaps表示)。
類(class)中的常量必須只由大寫字母和底線(_)組成。
方法名(method name) 必須使用駝峰式(cameCase)寫法(譯者註:後文將直接用camelCase表示)。
2. 檔案 2.1. PHP標籤
PHP代碼必須只使用長標籤(<?php ?>)或者短輸出式標籤(<?= ?>);而不可使用其他標籤。
2.2. 字元編碼
PHP代碼的編碼格式必須只使用不帶位元組順序標記(BOM)的UTF-8。
2.3. 副作用
一個源檔案建議只用來做聲明(類(class),函數(function),常量(constant)等)或者只用來做一些引起副作用的操作(例如:輸出資訊,修改.ini配置等),但不建議同時做這兩件事。
短語副作用(side effects)的意思是 在包含檔案時 所執行的邏輯與所聲明的類(class),函數(function),常量(constant)等沒有直接的關係。
副作用(side effects)包含但不局限於:產生輸出,顯式地使用require或include,串連外部服務,修改ini配置,觸發錯誤或異常,修改全域或者靜態變數,讀取或修改檔案等等
下面是一個既包含聲明又有副作用的樣本檔案;即應避免的例子:
<?php// 副作用:修改了ini配置ini_set(‘error_reporting‘, E_ALL);// 副作用:載入了檔案include "file.php";// 副作用:產生了輸出echo "<html>\n";// 聲明function foo(){ // 函數體}
下面是一個僅包含聲明的樣本檔案;即應提倡的例子:
<?php// 聲明function foo(){ // 函數體}// 條件式聲明不算做是副作用if (! function_exists(‘bar‘)) { function bar() { // 函數體 }} 3.
空間名(namespace)和
類名(class name)
命名空間(namespace)和類(class)必須遵守 PSR-0.
這意味著一個源檔案中只能有一個類(class),並且每個類(class)至少要有一級空間名(namespace):即一個頂級的組織名(vendor name)。
類名(class name) 必須使用StudlyCaps寫法。
PHP5.3之後的代碼必須使用正式的命名空間(namespace)
例子:
<?php// PHP 5.3 及之後:namespace Vendor\Model;class Foo{}
PHP5.2.x之前的代碼建議用偽命名空間Vendor_作為類名(class name)的首碼
<?php// PHP 5.2.x 及之前:class Vendor_Model_Foo{} 4. 類的常量、屬性和方法
術語類(class)指所有的類(class),介面(interface)和特性(trait)
4.1. 常量
類常量必須只由大寫字母和底線(_)組成。
例子:
<?phpnamespace Vendor\Model;class Foo{ const VERSION = ‘1.0‘; const DATE_APPROVED = ‘2012-06-01‘;} 4.2. 屬性
本指南中故意不對$StulyCaps,$camelCase或者$unser_score中的某一種風格作精選,完全由讀者依據個人喜好決定屬性名稱的命名風格。
但是不管你如何定義屬性名稱,建議在一個合理的範圍內保持一致。這個範圍可能是組織(vendor)層級的,包(package)層級的,類(class)層級的,或者方法(method)層級的。
4.3. 方法
方法名則必須使用camelCase()風格來聲明。
PSR-1 基礎編碼規範