1 文件格式php
1.1 文件標記css
不使用短標籤;數據庫
只含有PHP代碼的文件,在文件結尾省略「?>「,這是爲了防止」?>「以後出現多餘的空字符影響後面的代碼。緩存
1.2 文件和目錄名服務器
文件名和目錄名只含字母、數字、下劃線、中劃線。使用駝峯命名;session
//類統一採用 DemoTest.class.php //接口統一採用 DemoTest.interface.php //其餘按照各自的方式 demoTest.{style}.php
1.3 文件目錄結構app
一般一個完整獨立的PHP項目的目錄結構以下:
編輯器
┗━━━app //獨立的應用函數
┣━━━class //單個類文件,公用的類文件
優化
┣━━━config/inc //配置文件目錄
┣━━━data //數據文件目錄
┣━━━doc //程序相關文檔
┣━━━htdocs //document_root
┣━━━images //全部圖片文件的路徑(根據須要設立子目錄)
┣━━━css //CSS文件
┣━━━js //JS腳本文件
┣━━━lib //公用類庫
┣━━━template //模板文件
┣━━━temp //臨時文件目錄
┃ ┣━━━cache
┃ ┣━━━session
┃ ┣━━━template_c
┃ ┣━━━other
┣━━━upload //上傳文件(按特定規則分目錄存放)
┣━━━manage //後臺管理文件存放目錄
2 命名規範
2.1 變量命名
一個有效變量名有字母、數字、下劃線開頭,後面跟任意數量的字母、數字、下劃線;
程序總體以駝峯法命名,以小寫字母開頭,如:
function displayName($name) { echo $name; }
PHP全局變量鍵值兩邊都有「_」,中間使用駝峯法命名,如:
$_GLOBAL['_beginTime_'];
普通變量總體採用駝峯法,以小寫字母開頭。對於一些常見變量按照約定命名,如:資源->$resource,布爾值->$flag;
函數名要有意義,也要儘可能縮寫,建議採用動詞或動詞加名詞的命名方式,如:showMsg;
類中的屬性變量遵照普通變量的命名規則。
2.2 類及接口命名
類
以大寫字母開頭;
多個單詞組成的變量名,單詞之間不用間隔,各個單詞首字母大寫;
類名與類文件保持一致;
程序中全部類名惟一;
抽象類應以Abstract開頭。
接口
採起和類相同的命名規則;
儘可能保持和實現它的類命名一致。
2.3 數據庫命名
在數據庫的命名中,一概不出現大寫;
數據表
表名使用小寫字母;
表名使用統一前綴;
對於多個單詞組成的表名,使用「_」間隔;
表字段
所有使用小寫字母命名;
多個單詞不用下劃線分割;
若是有必要,給經常使用字段加上表名首字母做爲前綴;
避免使用關鍵字和保留字。
存儲過程、觸發器、event以及視圖的命名在表的命名規則的基礎上,遵循如下規則:
存儲過程以proc_開頭;
觸發器以tri_開頭;
Event調度以event_開頭;
視圖以view_開頭。
2.4 習慣與約定
循環體中的臨時變量採用「IN規則」,即在循環體重,可使用$i、$j這樣無心義的變量,一般用字母 I~N;
經常使用縮寫
image->img
string->str
database->db
array->arr
count->cnt
temporary->temp或tmp
password->passwd或pwd
message->msg
魔術數字指直接寫在代碼裏的具體數字,通常認爲代碼中不該該含有魔術數字,能夠經過常量定義來避免這種狀況
define(TAX, 1.05); $price_tax = TAX * price;
3 註釋規範
3.1 程序註釋
寫在被註釋代碼前面,而不是後面。但對於單行語句,按照習慣能夠把註釋放在語句末尾;
對於大段註釋,使用/* */格式,一般在文件和函數註釋中使用,而代碼內部統一使用 // 註釋,由於其寫起來簡單;
註釋不宜太多,你們能看懂的行沒必要註釋。
/** * 初始化過程 * @access public * @return void */ function init() { //列表文件不存在,則從新編譯 if (!is_file(DATA_DIR . 'list.php')) { APP::clear(); //必須先刪除緩存,防止數據不一致 APP::build(); } }
3.2 文件註釋
文件註釋一般放在整個PHP文件頭部,其內容包括文件版權、做者、編寫日期、版本號等重要信息。
文件註釋遵循如下規則:
必須包含本程序的描述;
必須包含做者;
必須包含項目名稱;
必須包含文件的名稱;
能夠包含書寫日期;
能夠包含版本信息;
能夠包含重要的使用說明,如類的調用方法、注意事項等。
例如
/** * XX動漫論壇 * * LICENSE * * 本代碼來自於XX動漫論壇項目 * @description 模型初始化,按需加載所須要的資源 * @package __MODELINI__ * @copyright Copyright(c) 2005-2111 阿里巴巴 Inc. * @author Ckelp ckelp@qq.com * @version 1.02 * @modify 優化了search方法,提升效率。by:Ckelp */
須要注意,文件必定要加上做者信息,這樣有利於劃分代碼責任,同時方便代碼閱讀者聯繫做者。另外,版本號須要隨着每次更新進行改動,而且加上modify註釋,代表每次改動什麼地方。
3.3 類/接口註釋
類和接口的註釋儘可能簡潔,通常狀況,一個文件只包含一個類,若是文件註釋已經足夠詳細,能夠不用給類寫註釋。若是同時存在接口和接口的實現類,一般作法是僅在接口中進行註釋。
3.4 方法和函數註釋
方法和函數的註釋寫在前面,一般須要標明的信息有可見性、參數類型和返回值的類型,例如:
/** * 鏈接數據庫 * @param string $dbhost 數據庫服務器地址 * @param string $dbuser 數據庫用戶名 * @param string $dbpw 數據庫密碼 * @param string $dbname 數據庫名 * @param string $charset 數據庫編碼 * @access public * @return void */ public function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $charset = 'utf8') { // }
4 代碼風格
4.1 縮進和空格
在編輯器中將tab設置爲4個空格;
賦值變量是,等號左右留出空格;
使用大型IDE管理代碼,例如在zend studio中,使用Ctrl+Shift+F對代碼進行格式化。