PHP规范
1. 为什么要编码规范
•编码规范(code conventions)对于程序员而言尤为重要,有以下几个原因:
1.在一个软件的生命周期中,80%的花费用于维护。
2.几乎没有任何一个软件在其整个生命周期中均由最初的开发人员来维护。
3.编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。
4.如果将源码作为产品发布,就需要确认它是否被很好地打包并且清晰无误,和其他已构建的任何产品一样。
2. 概要
•用四个空格代替tab缩进。
•去掉PHP文件底部的“?>”。
•每行程序一般少于80字符,超出部分,分成多行书写。
•每行只写一条语句,不允许把多个短语句写在一行中。
•应为文件和函数添加注释。
•应及时删除废除的注释代码。
•变量、函数的命名应规范。
3. 编辑器设定
3.1. 缩进
所有的缩进使用空格取代Tab制表符。PHP文件采用4个空格的缩进,HTML文件以及HTML文件中嵌入的Javascript代码采用2个空格的缩进;单独的 Javascript以及CSS文件采用4个空格的缩进。
3.2. 字符编码
所有PHP、HTML文件均保存为No Bom UTF-8的字符编码。
4. 代码布局
4.1. 文件底部
去掉文件底部 “?>”。
4.2. 相对独立的程序块之间、变量说明之后必须加空行
示例:如下例子不符合规范
复制代码 代码如下:
if (!$valid_ni()){
... // program code
}
$repssn_ind = $ssn_data['index']->repssn_index;
$repssn_ni = $ssn_data['index']->ni;
应如下书写:
if (!valid_ni(){
... // program code
}
$repssn_ind = $ssn_data['index]->repssn_index;
$repssn_ni = $ssn_data[index]->ni;
4.3. 较长的语句要分成多行书写
一行程序需小于80字符
较长的语句要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首示例:
复制代码 代码如下:
$perm_count_msg->len = NO7_TO_STAT_PERM_COUNT_LEN
+ STAT_SIZE_PER_FRAM * strlen( $len );
$act_task_table[$frame_id * STAT_TASK_CHECK_NUMBER + $index]->occupied
= $stat_poi[index]->occupied;
$act_task_table[taskno]->duration_true_or_false
= sys_get_sccp_statistic_state( $stat_item );
if (($taskno < $max_act_task_number)
&& (n7stat_stat_item_valid ($stat_item))){
... // program code
}
for ($i = 0, $j = 0; ($i < $bufferKeyword['word_index']->word_length)
&& ($j < new_keyword->word_length); $i++, $j++){
... // program code
}
4.4. 一行只写一条语句
不允许把多个短语句写在一行中,即一行只写一条语句。示例:如下例子不符合规范
$rect->length = 0; $rect->width = 0;
应如下书写:
$rect->length = 0;$rect->width = 0;4.5. 始终包含大括号
这是因为懒于多敲两个字符而给代码清晰带来问题的又一个情形。
示例:如下例子不符合规范
复制代码 代码如下:
if ($condition) do_stuff();
if ($condition)
do_stuff();
while ($condition)
do_stuff();
for ($i = 0; $i < $size; $i++)
do_stuff($i);
应如下书写
复制代码 代码如下:
if (condition){
do_stuff();
}
while ($condition){
do_stuff();
}
for ($i = 0; $i < $size; $i++){
do_stuff();
}
4.6. switch写法
示例:如下例子符合规范
复制代码 代码如下:
switch (){
case ‘1':
..program
break;
case ‘2':
..program
break;
}
4.7. 大括号放在哪儿
程序块的分界符(大括号‘{'和‘}')应各独占一行并且位于同一列,同时与引用它们的语句左对齐。
而在函数体的开始、类的定义、以及if、for、do、while、switch、case语句中的右大括号应放在行尾, 左大括号应与右大括号所在行的行首处在同一列
示例:如下例子不符合规范
复制代码 代码如下:
for (...)
{
... // program code
}
if (...)
{
... // program code
}
function example_fun()
{
... // program code
}
应如下书写:for (...){
... // program code
}
if (...){
... // program code
}
function example_fun(){
... // program code
}
4.8. 符号之间使用空格
采用这种松散方式编写代码的目的是使代码更加清晰。