PHP 網頁設計 技巧
一、 變量命名
a) 所有字母都用小寫
b) 首字母根據變量值類型指定
i. 整數i
ii. 浮點數f
iii. 字符串s
iv. 布爾值b
v. 陣列a
vi. 對象o
vii. 資源r
viii. 混合類型m
c) 使用’_’作為每一個詞的分界
例如:
$i_age_max = 10;
$f_price = 22.5;
$s_name =‘harry’;
$b_flag = true;
$a_price = array();
$o_object = new class();
$r_file = fopen();
$m_var = array_combine($a_name, $a_flag);
二、 類命名
a) 使用大寫字母作為詞的分隔,其他的字母均使用小寫,即駝峰格式。
b) 名字的首字母使用大寫
c) 不要使用下劃線(’_')
d) interface接口最好使用大寫字母I,並以Interface結尾
例如:
class NameOneTwo
class Name
interface IExampleInterface ()
三、 方法命名
a) 使用大寫字母作為詞的分隔,其他的字母均使用小寫
b) 名字的首字母使用大寫,聲明為 “private” 或 “protected” 的,使用’_’為前綴
c) 不要使用下劃線(’_')
d) (與類命名一致的規則)
e) 對象的訪問器總是以 “get” 或 “set” 為前綴,當使用設計模式如 單態模式(singleton)或工廠模式(factory),方法的名字應當包含模式的名字,這樣容易從名字識別設計模式。
例如:
class NameOneTwo{
public function DoIt() {};
protect function _HandleError() {};
private function _SayHello() {};
}
四、 類屬性命名
a) 屬性名前綴應以屬性值類型指定(具體參照變量命名規則)
b) 前綴後採用與類命名一致的規則
c) 私有屬性採用’_’為前綴
例如:
class NameOneTwo {
public function VarAbc() {};
public function ErrorNumber() {};
public $iAge;
private $_iAge;
}
五、 方法中參數命名
a) 參照類屬性命名
例如:
class NameOneTwo {
public function VarAbc($sMsg) {};
}
六、 全局變量
a) 全局變量應該帶前綴‘g’
b) 其餘參照變量命名規則
例如:
global $gi_Age;
global $ga_Price
七、 定義命名/全局常量
a) 全局常量使用’_’分割每個單詞
b) 所有字母使用大寫
例如:
define(‘E_ERROR_MISSING_PARA’, 501);
八、 函數
a) 所有的字母採用小寫,使用’_’分割每個單詞
例如:
function some_bloody_function(){
}
九、 大括號{}規則
a) 將大括號放置關鍵詞下方的同列處或同行,推薦放到同行
例如:
function some_bloody_function() {
}
if (true) {
// code
}
十、 縮進/製表符規則
a) 使用製表符縮進
例如:
function some_bloody_function() {
if (true) {
//code
}
}
十一、 小括號、關鍵詞和函數規則
a) 不要把小括號和關鍵詞緊貼在一起,要用空格隔開它們
b) 小括號和函數名要緊貼在一起
c) 除非必要,不要在Return返回語句中使用小括號
例如:
if (condition) {
}
strcmp($sHello, $sEvening);
return 1;
十二、 If Then Else格式
佈局
if (條件1) { //注釋
}
else if (條件2) { //注釋
}
else { //注釋
}
如果你有用到else if語句的話,通常最好有一個else塊以用于處理未處理到的其他情況。可以的話放一個記錄資訊注釋在else處,即使在else沒有任何的動作。
條件格式
總是將恆量放在等號/不等號的左邊,例如:
if ( 6 == $errorNum ) …
一個原因是假如你在等式中漏了一個等號,語法檢查器會為你報錯。第二個原因是你能立刻找到數值,而不是在你的表達式的末端找到它。需要一點時間來習慣這個格式,但是它確實很有用。
十三、 Switch格式
a) default總應該存在,它應該不被到達,然而如果到達了就會觸發一個錯誤。
b) 如果你要創立一個變量,那就把所有的代碼放在塊中。
例如:
switch ($numPeople) {
case 1:
break;
case 2:
break;
default:
break;
}
十四、 ?:三元運算子
a) 把條件放在括號內以使它和其他的代碼相分離。
b) 如果可能的話,動作可以用簡單的函數。
c) 把所做的動作,“?”,“:”放在不同的行,除非他們可以清楚的放在同一行。
例如
(condition) ? funct1() : func2();
(condition)
? long statement
: another long statement;
十五、 代碼塊的聲明
a) 聲明代碼塊需要對齊。
例如
$iDate = 0;
$irDate = NULL;
$sName = ‘’;
$mName = NULL;
十六、 不要採用缺省方法測試非零值
不要採用缺省值測試非零值,也就是使用:
if (FAIL != f())
比下面的方法好:
if (f())
即使FAIL可以含有0值,也就是PHP認為false的表示。在某人決定用-1代替0作為失敗返回值的時候,一個顯式的測試就可以幫助你了。就算是比較值不會變化也應該使用顯式的比較;
例如:if (!($bufsize % strlen($str)))應該寫成:if (($bufsize % strlen($str)) == 0)以表示測試的數值(不是布爾)型。一個經常出問題的地方就是使用strcmp來測試一個字符等式,結果永遠也不會等於缺省值。
非零測試採用基於缺省值的做法,那麼其他函數或表達式就會受到以下的限制:
只能返回0表示失敗,不能為/有其他的值。
命名以便讓一個真(true)的返回值是絕對顯然的,調用函數IsValid()而不是Checkvalid()。
十七、PHP注釋與方法解析
a) //單行注釋
b) 第二種
/*
* 多行注釋…
*
*/
c) 第三種
/**
* 多行文檔注釋…
*
*/
d) 關於文檔注釋的說明
/**
* 這是一個關於函數的注釋 …
*
*/
function bac(){}
/*
* 這不是一個文檔注釋,因為不是以/**開頭 …
*
*/
function bac(){}
/**
* 這是一個文檔注釋,但與函數無關,因為他沒放到函數前面 …
*
*/
function bac(){}
e) 文檔說明
/**
* 文件說明
* @author 作者
* @license License
* @version 1.0
* @link
* @final
*/
推薦寫完代碼後用ZendStudio重新格式化一次代碼,清晰
留言列表