Zend-PHP编码规范
1.对于只包含PHP的文件,"?>"是不允许存在的。注释:防止末尾被意外的注入空白并显示输出。
2.缩进应使用四个空格的缩进,而不使用制表符TAB。
3.一行80个字符是比较合适的,最多为120字符。
4.行的结束符只能是标准的UNIX文本文件的换行,换行符在文件中表示为10,或16进制的 0x0A。
不要使用windows的回车换行组合(0x0D,0x0A)。
5.类的命名只允许有字母数字字符,不鼓励使用数字。下划线只允许做路径分隔符。例如Zend/Db/Table.php文件对应的类的名称为Zend_Db_Table。如果类名包含多个单词,那么每一个单词的第一个字母必须大写。连续的大写是不允许的,如"Zend__PDF"是不允许的,而"Zend_Pdf"是可以接受的。*用户的代码最好不要以Zend_开头。
6.接口类规定同上,但最后必须以"Interface"结尾。如"Zend_Pdf_Interface".
7.只有字母数字字符,下划线和短横线"-"可用,空格是不允许的。
包含任何php代码的文件必须以".php"扩展名为结尾.同样需要遵循类名的规则.
8.函数名只使用字母数字字符,不鼓励使用数字,下划线是不允许的。
函数名总是以小写开头,但函数名包含多个单词,每个子的首字母必须大写,遵循“驼峰”格式。
鼓励使用长的名字,这样容易理解代码。
对于面向对象编程,对象的访问器总是以"get","set"为前缀。当使用设计模式如单态模式(singleton)或工厂模式(factory),方法的名字应当包含模式的名字,这样容易从名字识别设计模式.
在对象中的方法,声明为"private"或"protected"的,名称的首字符必须是一个单个的下划线,这是唯一的下滑线在方法名字中使用的方法。声明为"public"的从不以下划线开头。
全局函数("floating functions")允许但是不鼓励使用,建议把这类函数封装到静态类里。
9.变量只包含数字字母字符,不鼓励使用数字,下划线不接受。
声明为"private"或"protected"的类成员变量名必须以一个单个下划线开头,这是唯一的下划线在变量名中的用法,声明为"public"的从不以下划线开头.
变量名总以小写字母开头并遵循“驼峰式”命名约定。
鼓励使用冗长的名字,这样容易理解,除非在小循环中,不鼓励使用简洁的名字"$i"或"$n"之类的。
如果有一个循环超过了20行代码,索引的变量名字必须有个描述性意义的名字。
常量包含数字字母字符恶化下划线,数字允许作为常量名。
常量名字所有字母必须大写.
常量中的单词必须加下滑线。
常量必须通过"const"定义为类的成员,不鼓励使用"define"定义的全局常量.
10.php代码总是使用完整的php标签定界。<?php...?>。段标签是不允许的。只包含php的代码文件,不加结束标签。参见规则1。
11.当字符串是文字,不包含变量时,用单引号来括。当文字字串中包含单引号时,用双引号括,特别在SQL语句中。
12.变量替换允许"$name",不许"$(name)"。虽然两种都是对的。
13.字符串用"."操作符链接,在它的前后加上空格提高可读性。如"'Zend' . ' ' . 'Technologies'"。也可以分为多行来提高可读性。
$sql = "SELECT 'id','name' FROM 'people'"
. "WHERE 'name' = 'Susan'"
. "ORDER BY 'name' ASC";
14.数组中,索引不能为负数。
建议索引从0开始。
用array声明多行有索引的数组,在每个连续的行的开头要用空格填补对齐。
用声明关联数组array,我们鼓励把代码分成多行,在每个连续行的开头用空格填补来对其键和值。如:
$sampleArray = array('firstKey' => 'firstValue',
'secondKey' => 'secondValue'
);
15.花括号总是从类名的下一行开始。
每个类必须有一个复合PHPDocumentor标准的文档块。
四个空格的缩进。
每个PHP文件中只有一个类。
16.变量的声明必须在类的顶部,要先于方法的声明。
不允许使用var。要用private、protected或public.
直接访问变量允许但是不鼓励,最好使用访问器(set/get).
17.函数的参数用逗号和紧接着的空格分开。如:
threeArguments(1, 2, 3);
传址方式在调用的时候是禁止的。
18.使用if and elseif的控制语句在条件语句的圆括号前后都必须有一个空格。
在圆括号里的田间语句,操作符必须用空格分开,鼓励使用多重圆括号以提高在复杂的条件中划分逻辑组合。
前花括号和条件语句在同一行,后花括号单独在最后一行,其中的内容用四个空格缩进。如:
if ($a > 1) {
$a = 1;
} elseif ($a = 1) {
$a = 0;
} else {
$a = -1;
}
*虽然php允许这些语句不使用花括号,但这在ZF的代码标准中,这是不允许的。
19.在"switch"结构中,控制语句在条件语句的圆括号前后必须有一个单独的空格。
代码必须有四个空格的缩进,在“case”中的代码再缩进四个空格。
switch ($numPeople) {
case 1:
break;
case 2;
break;
default:
break;
}
switch语句中必须有default.
*有时候,在falls throuth 到下个case的case语句中不写break or return 很有用。为了区别于bug,任何case语句中,所有不写break or return的地方必须有"//break intentionally omitted"这样的注释。
20.所有文档块("docblocks")必须和phpDocumentor格式兼容。
所有Zend Framework或和它一起工作的源代码必须在每个文件的顶部包含文件级("file-level")的docblock,
每个包含php代码的文件必须在文件顶部包含这些phpDocumentor标签:
每个类至少包含以下标签:
每个函数,包括对象方法,必须最少包含以下文档块(docblock):
a.函数的不描述
b.所有参数
c.所有可能的返回值
英文访问级别已经有"private"等所以不需要用@access。
如果函数/方法抛出一个异常,使用@throws:
@throws exceprionclass [description]