编码规范设计
编码:本系统编码采用无BOM的utf-8格式。
注意:请确认你的编辑器不会有意或无意的保存文件为 UTF-8 BOM 格式, 否则可能造成本系统通信不正常。
缩进
每个缩进的单位约定是一个Tab(禁止设置为空格替代,Tab宽度应表示为4个空白字符宽度),需每个参与项目的开发人员在编辑器(UltraEdit、EditPlus、Zend Studio等)中进行强制设定,以防在编写代码时遗忘而造成格式上的不规范。
换行
本系统项目中使用Unix风格的换行符,即只有换行( LF 或 “\n” )没有回车( CR 或 “\r” ),请在你的编辑器内调整
代码标记
PHP程序需使用 <?php ?> 来界定 PHP 代码,在HTML页面中嵌入纯变量时,可以使用 <?php echo $variablename;?> 这样的形式。
注意:为了使代码规范化和标准化,本系统开发中禁止使用 <? ?> 和 <?=$variablename?> 这种速记形式。
注释
注释是对于那些容易忘记作用的代码添加简短的介绍性内容。请使用 C 样式的注释“/* */”和标准 C++ 注释“//”。
开发留下的临时代码和调试代码必须添加注释,以免日后遗忘。所有临时性、调试性、试验性的代码,必须添加统一的注释标记“//debug”并后跟完整的注释信息,这样可以方便在程序发布和最终调试前批量检查程序中是否还存在有疑问的代码。
例如:
$num ;= ;1;$flag ;= ;TRUE; ; //debug ;这里不能确定是否需要对$flag进行赋值if(empty($flag)) ;{ //Statements}
书写规则
大括号{}、if和switch
首括号与关键词同行,尾括号与关键字同列;
if 结构中,else 和 elseif 与前后两个大括号同行,左右各一个空格。另外,即便 if 后只有一行语句,仍然需要加入大括号,以保证结构清晰;
switch 结构中,通常当一个 case 块处理后,将跳过之后的 case 块处理,因此大多数情况下需要添加 break。break 的位置视程序逻辑,与 case 同在一行,或新起一行均可,但同一 switch 体中,break 的位置格式应当保持一致
以下是符合上述规范的例子:
if($condition) ;{ //Statements} ;else ;{ switch($str) ;{ case ;'abc': $result ;= ;'abc'; break; default: $result ;= ;'unknown'; break; }}
运算符、小括号、空格、关键词和函数
每个运算符与两边参与运算的值或表达式中间要有一个空格;
左括号“(” 应和函数关键词紧贴在一起,除此以外应当使用空格将“(”同前面内容分开;
右括号“)”除后面是“)”,其他一律用空格隔开它们;
除字符串中特意需要,一般情况下,在程序以及HTML中不出现两个连续的空格;
任何情况下,PHP程序中不能出现空白的带有TAB或空格的行,即:这类空白行应当不包含任何TAB或空格。同时,任何程序行尾也不能出现多余的TAB或空格;
每段较大的程序体,上、下应当加入空白行,两个程序块之间只使用1个空行,禁止使用多行。程序块划分尽量合理,过大或者过小的分割都会影响他人对代码的阅读和理解。一般可以以较大函数定义、逻辑结构、功能结构来进行划分。少于15行的程序块,可不加上下空白行;
说明或显示部分中,内容如含有中文、数字、英文单词混杂,应当在数字或者英文单词的前后加入空格。
根据上述原则,以下举例说明正确的书写格式:
$result ;= ;(($a ;+ ;1) ;* ;3 ;/ ;2 ;+ ;$num)) ;. ;'Test';$condition ;? ;func1($var) ; ;func2($var);$condition ;? ;$long_statement ;: ;$another_long_statement;if($flag) ;{ //Statements //More ;than ;15 ;lines}showmessage('请使用 ;restore.php ;工具恢复数据。');
函数定义
参数的名字和变量的命名规范一致;
函数定义中的左小括号,与函数名紧挨,中间无需空格;
开始的左大括号与函数定义为同一行,中间加一个空格,不要另起一行;
具有默认值的参数应该位于参数列表的后面;
函数调用与定义的时候参数与参数之间加入一个空格;
必须仔细检查并切实杜绝函数起始缩进位置与结束缩进位置不同的现象;
例如,符合标准的定义:
function ;message($string, ;$operation, ;$key ;= ;'') ;{if($flag) ;{//Statement}//函数体} 不符合标准的定义: function ;authcode($string,$operation,$key ;= ;''){//函数体}
引号
由于PHP中单引号和双引号具有不同的含义,因此在使用时有如下原则:
在能使用单引号的情况下,禁止使用双引号。
字符串为固定值,不包含换号、制表等特殊转义时,需使用单引号。
字符串作为数据索引时,需使用单引号。
字符串不需要带入变量,需使用单引号。
数据库SQL语句中,所有数据必须加单引号,无论数值还是字串,以避免可能的注入漏洞和SQL错误。$sql = "UPDATE " . tablename('members') . " SET adminid='1' WHERE AND adminid='2'";
条结果""