自用PHP編碼規範

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對代碼進行格式化。

相關文章
相關標籤/搜索