《PHP代码编写规范.doc》由会员分享,可在线阅读,更多相关《PHP代码编写规范.doc(9页珍藏版)》请在金锄头文库上搜索。
1、PHP代码编写规范一、编辑器设置(1)使用Tab缩进,不要使用空格鉴于很多编辑器在保存文件时会自动清除用于缩进的空格,所以我们一律使用Tab键进行缩进。(2)UNIN文件格式请将编辑器设置对所有程序使用UNIX格式保存,不要使用Win32或者Mac的格式。例如,EditPlus里面Document-File Format(CR/LF)-Unix 。对于windows格式文件,以Ctrl + M结束(vim下为M),需要过滤掉:$text = strtr($text, x0D, );二、命名设置1、公共库名称空间TPLIB,Tencent PHP Library2、变量命名(1)所有字母都使用小
2、写(2)首字母根据变量值类型指定整数I、浮点数f、字符串s、布尔值b、数组a、对象o、资源r、混合类型m(3)使用_作为每一个词的分界例如:$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);3、类命名(1)使用大写字母作为词的分隔,其他的字母均使用小写,即驼峰格式。(2)名字的首字母使用大写(3)不要使用下划线(_)(4
3、)interface接口最好使用大写字母I,并以Interface结尾例如:class NameOneTwoclass Nameinterface IExampleInterface ()4、方法命名(1)使用大写字母作为词的分隔,其他的字母均使用小写(2)名字的首字母使用大写,声明为 “private” 或 “protected” 的,使用_为前缀(3)不要使用下划线(_)(4)与类命名一致的规则(5)对象的访问器总是以 “get” 或 “set” 为前缀,当使用设计模式如 单态模式(singleton)或工厂模式(factory),方法的名字应当包含模式的名字,这样容易从名字识别设计模式。
4、例如:class NameOneTwopublic function DoIt() ;protect function _HandleError() ;private function _SayHello() ;5、类属性命名(1)属性名前缀应以属性值类型指定(具体参照变量命名规则)(2)前缀后采用与类命名一致的规则(3)私有属性采用_为前缀例如:class NameOneTwo public function VarAbc() ;public function ErrorNumber() ;public $iAge;private $_iAge;6、方法中参数命名(1)参照类属性命名例如:c
5、lass NameOneTwo public function VarAbc($sMsg) ;7、全局变量(1)全局变量应该带前缀g(2)其余参照变量命名规则例如:global $gi_Age;global $ga_Price8、 定义命名/全局常量(1)全局常量使用_分割每个单词(2)所有字母使用大写例如:define(E_ERROR_MISSING_PARA, 501);9、 函数(1)所有的字母采用小写,使用_分割每个单词例如:function some_bloody_function()10、文件命名包含文件应该以.inc.php方式命名,例如config.inc.php。单独类的文件
6、使用Classname.php方式命名,包中的类使用 PackageName/ClassName.php命名。三、代码层1、大括号规则(1)将大括号放置关键词下方的同列处或同行,推荐放到同行例如:function some_bloody_function() if (true) / code2、 缩进/制表符规则(1)使用制表符缩进例如:function some_bloody_function() if (true) /code3、小括号、关键词和函数规则(1)不要把小括号和关键词紧贴在一起,要用空格隔开它们(2)小括号和函数名要紧贴在一起(3)除非必要,不要在Return返回语句中使用小括
7、号例如:if (condition) strcmp($sHello, $sEvening);return 1;4、 If Then Else格式布局if (条件1) /注释else if (条件2) /注释else /注释如果你有用到else if语句的话,通常最好有一个else块以用于处理未处理到的其他情况。可以的话放一个记录信息注释在else处,即使在else没有任何的动作。条件格式总是将恒量放在等号/不等号的左边,例如:if ( 6 = $errorNum ) 一个原因是假如你在等式中漏了一个等号,语法检查器会为你报错。第二个原因是你能立刻找到数值,而不是在你的表达式的末端找到它。需要一
8、点时间来习惯这个格式,但是它确实很有用。5、Switch格式(1)default总应该存在,它应该不被到达,然而如果到达了就会触发一个错误。(2)如果你要创立一个变量,那就把所有的代码放在块中。例如:switch ($numPeople) case 1:break;case 2:break;default:break;6、 ?:三元运算符(1)把条件放在括号内以使它和其他的代码相分离。(2)如果可能的话,动作可以用简单的函数。(3)把所做的动作,“?”,“:”放在不同的行,除非他们可以清楚的放在同一行。例如(condition) ? funct1() : func2();(condition)
9、? long statement: another long statement;7、 代码块的声明(1)声明代码块需要对齐。例如$iDate = 0;$irDate = NULL;$sName = ;$mName = NULL;8、 不要采用缺省方法测试非零值不要采用缺省值测试非零值,也就是使用:if (FAIL != f()比下面的方法好:if (f()即使FAIL可以含有0值,也就是PHP认为false的表示。在某人决定用-1代替0作为失败返回值的时候,一个显式的测试就可以帮助你了。就算是比较值不会变化也应该使用显式的比较;例如:if (!($bufsize % strlen($str)
10、应该写成:if ($bufsize % strlen($str) = 0)以表示测试的数值(不是布尔)型。一个经常出问题的地方就是使用strcmp来测试一个字符等式,结果永远也不会等于缺省值。非零测试采用基于缺省值的做法,那么其他函数或表达式就会受到以下的限制:只能返回0表示失败,不能为/有其他的值。命名以便让一个真(true)的返回值是绝对显然的,调用函数IsValid()而不是Checkvalid()。9、PHP注释与方法解析(1)/单行注释(2)/* * 多行注释*/(3)/* * 多行文档注释 * */(4)关于文档注释的说明/* 这是一个关于函数的注释 */function bac(
11、)/* 这不是一个文档注释,因为不是以/*开头 */function bac()/* 这是一个文档注释,但与函数无关,因为他没放到函数前面 */function bac()e) 文档说明/* 文件说明* author 作者* license License* version 1.0* link* final*/10、在运算符之间使用空格在比较运算符(、=、=、=、=、!=、!=)、赋值运算符(=)、数学运算符(+、-、*、/、%)、位运算符(&、|、)、逻辑运算符(!、&、|)、冒号(:)、问号(?)、字符串连接运算符(.)、字符串连接赋值运算符(.=)前后,以及左括号(()前(函数调用例外)
12、、逗号(,)后请使用空格进行间隔。例如: /* These are all wrong. */$i=0;/* These are all right. */$i = 0; /* These are all wrong. */if($i7) ./* These are all right. */if ($i 7) . /* These are all wrong. */if ( ($i 8) ) ./* These are all right. */if ($i 8) . /* These are all wrong. */do_stuff($i,foo,$b);/* These are all
13、 right. */do_stuff($i, foo, $b);/* These are all wrong. */for($i=0; $i$size; $i+) ./* These are all right. */for ($i = 0;$i $size;$i+) . /* These are all wrong. */$i=($j $size)?0:1;/* These are all rightg. */$i = ($j $size)? 0: 1;11、运算符优先级对于容易引起迷惑的表达式中不同运算符的优先级,请使用括号来区分优先级。 例如: /* whats the result? who knows. */$bool = ($i 8 | $k = 4);/* now you can be certain what Im doing here. */$bool = ($i 7) & ($j 8) | ($k = 4)