养浩然之气,活着不是为技术,请关心身边的人.

(转)PHP编码规范

上一篇 / 下一篇  2007-09-28 11:23:14 / 个人分类: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)        不要使用下划线('_')

 

例如:

class NameOneTwo

class Name

 

三、            方法命名

a)        使用大写字母作为词的分隔,其他的字母均使用小写

b)        名字的首字母使用大写,私有方法使用’_’为前缀

c)        不要使用下划线('_')

d)        (与类命名一致的规则)

 

例如:

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 (...)

{

    case 1:

             ... // FALL THROUGH

    case 2:

    {

             $v = get_week_number();

              ...

    }

    break;

    default:

}

 

十四、     :三元运算符

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()

TAG: php

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 21640
  • 日志数: 146
  • 建立时间: 2007-08-01
  • 更新时间: 2008-02-20

RSS订阅

Open Toolbar