php 编码规范
1 版本记录
文件状态: [√] 草稿 [ ] 正式发布 [ ] 正在修改 版本历史 版本/状态 0.1 0.2 0.3 作者
文件标识: 当前版本: 作 者: 完成日期: 参与者 V0.3 xxx
日期
备注
2 前言
代码规范,仁者见仁,智者见智,在有些方面并无严格对错。主要目标是形成统一的编码 风格便于团队的交流、新人快速参与开发。同时,在一致的风格下,有利于团队成员之间互相 检查帮助,减少代码出错的几率,提高
工作效率。 注:本文中有的代码规范,大家可能有不同的看法,本文只是一种建议,期望大家形成统 一的编码风格;有些规范需要强制性执行,条目前会使用红色标识。
3
PHP 代码规范和开发原则
3.1 书写规范 3.1.1 文件编码
统一采用 UTF-8 编码
3.1.2 代码标签
统一使用作为 php 的界定标签,禁止使用短标签?>和=$var?>。 文件末尾 php 标签结束后,不能追加空格或换行字符。或者不使用 php 结束标签,也可以 防止出现此类错误
3.1.3 缩进
代码统一使用 TAB 进行缩进,不允许使用空格 TAB 混合缩进。严禁代码不缩进或不规范缩 进。
3.1.4 折行
适当控制每行代码长度如果过长的话需要另起一行。if 或 while 等语句的条件若较多较长, 应折行;新行以逻辑运算符起始,与第一行 if 左括号后的第一个字符对齐;折行后,每行 条件具有独立而明确的语义。 当函数参数过多过长时也应适当折行。 if (a > b ...... &;&; b > a..... &;&; ...) { Callfunc($longparamater1,$longparameter2, $longparamater3,$longparameter4, $longparamater5,$longparameter6,); } $sql = "SELECT `id`, `name` FROM `people` " . "WHERE `name` = 'Susan' " . "ORDER BY `name` ASC ";
example 1
3.2 控制结构与复合语句
复合语句使用{}将一段代码组织成一个复合语句,多见于 if 、else、while、switch 等语句。 对于复合语句有以下建议: 对于复合语句,一律使用{}进行包含,即使复合语句内只用一条语句。防止因修改代码和排 版的原因导致可能的后续错误。 控制结构的关键字后的()建议左右各留一个空格,语句块的开头{与关键字同行,而结尾的} 独立一行与关键字同等缩进。 遍历数组尽量使用 foreach 能用 foreach 的就不要用 for,能用 for 的就不要用 while switch 与 case 建议不使用缩进,case 内的代码段进行缩进。 例如
if ($valid_user === FALSE) { build_error_page(“不合法的用户”);//独立一条语句也必须使用{}包含
} else { switch ($user_type) { case ‘normal’: require (‘success_page_normal.inc.php’); break; case ‘superuser’: require (‘success_page_superuser.inc.php’); break; default: build_error_page(“不合法的用户”); } } example 2
3.3 段落
对于较长的代码,可以形成段落,段落应具有明显的
目标或功能区分,段落之间使用空行 或者简单的注释隔开(只允许使用一个空行隔开段落,,对于功能联系紧密的代码,不能用空 ) 行随意分割。 (不好的例子可参考附录) 。过长的代码段可封装成函数使用。
if ($user[‘black’] != 1) { //从数据库获取用户照片并生成显示 url …20 行代码 …若干代码 } else { show_black_info(); } example 3
3.4 常量 3.4.1 常量定义
常量使用大写字母命名,同时名称应能够明确代表值的意义,必要时在后面加入注释。 同一常量只能定义一次,常量一经定义就不能改变。对同一常量的重复定义是无效的,最 容易犯的错误就是重复定义了被包含文件内的常量。例如:
require_once(dirname(__FILE__).‘/../include/global_top.php’); define(‘SDB_HOST’, ’10.0.0.138’); //无效定义,因为此常量已经在 global_top.php 中定义。 $SDB = &;new Database(SDB_HOST, SDB_PORT…); //还是原来的数据库 example 4
3.4.2 消除 magic number
文件中尽量不要直接在代码中使用数字量或则字符