php编码规范
开发团队的个人能力良莠不齐,代码风格也各有风格.为了提高项目整体编码质量,降低代码的维护难度,制定此编码规范。

php
1. 标签
视图文件参考smarty文档
php文件以<?php开始,不得使用其他标签风格
文件结尾空一行,省略?>结尾标签
2. 编码
utf-8
3. 注释
3.1 单行注释
语句上边或者结尾空一格使用// 注释,注意内容与定界符间加空格,eg.
// 上边注释 $a = 'aaa'; $result = $a . '+'; // 结尾注释
3.2 多行注释
多行注释以/**开始,以*/结束。eg.
/** * 这里是多行注释 * 每行以*加空格开头 */
3.3 文件注释
eg.
/** * 简述 * 详细功能描述(可省略) * @author 作者名称 * @email 邮箱地址 * @date 添加日期 */
3.4 类注释
eg.
/** * 简述 * 详细描述(可省略) */
3.5 方法注释
/** * 简述 * @param 类型 变量名 备注 * @return 类型 备注 */
3.6 属性注释
/** * @var 类型 变量名 备注 */
4. 命名规范
Pascal 所有单词首字母大写
Camel 除了首单词,所有单词首字母大写
遵循以下原则:
- 严禁使用汉语拼音缩写
- 除了众所周知的缩写,避免使用单词缩写
- 英文单词组合
- 避免使用汉语拼音
4.1 文件命名
4.1.1 类文件使用Pascal命名方法,所有单词首字母大写
User.php
OrderDetail.php
4.1.2 配置文件使用小写
config.php
database.php
4.2 函数、方法明明使用Camel命名方法,首字母小写,其他单词首字母大写
function sum () { } public function getName() { }
4.3 变量使用Camel 命名方法,首字母小写,其他单词首字母大写
除循环迭代变量,严禁使用单字母变量名
$name = 'ianzhi'; $orderDetail = new OrderDetail();
4.4 常量命名全部使用大写,使用下划线分隔多单词
const DATABASE_NAME = 'aaa';
5. 书写规范
5.1 文件
- 所有php文件使用Unix LF作为行结束符
- 所有php文件必须以一个空行结束
- 所有php文件必须省略?>结束标签
5.2 行
- 行长度没有硬限制,但一般不超过80个字符,多余80个字符应折为多行
- 一行不得多余一个语句
- 使用空行来改善可读性,区分代码块
5.3 缩进
所有缩进使用四个空格,不使用制表符缩进,所有开发人员在编辑器中强制修改tab为四个空格
5.4 控制结构
- 关键字后面必须有空格
- 左括号后不能有空格
- 右括号前不能有空格
- 右括号后有一个空格,之后放左花括号
- 代码主体必须有一次缩进
- 右花括号必须在主体的下一行,并与关键字缩进量相同
- eg.
5.4.1 if
if ($param == 0) { $name = 'ianzhi'; } else if ($param == 1) { $name = 'zhangsan'; } else { $name = 'lisi';
5.4.2 for
for ($i = 0; $i < 10; $i++) { }
5.4.3 foreach
foreach ($array as $key=>$value) { }
5.4.4 switch
switch ($expr) { case 0: echo 'case 0'; case 1: echo 'case1'; default: echo 'default'; }
5.4.5 while,do while
while ($expr) { } do { } while ($expr);
5.4.6 try catch
try { } catch (Exception $exception) { }
5.5 运算符
每个运算符与它两边参加运算的值或者表达式中间必须有一个空格。
5.6 引号
除了必须使用双引号的情况,所有的引号都应该使用单引号。
5.7 关键词
关键词必须使用小写
true,false,null等php常量必须使用小写
5.8 类
- 类必须单独放一个源文件,并且文件名与类名相同
- 类的左花括号必须放到类名下一行
- 一个类的extends和implements必须与类名在同一行
- 如果implements多个接口,可以折行为多个一次性缩进的行,但是第一个interface必须放在类名下一行,并且每行都只放一个接口
class Alphabeta implements IInterface1, IInterface2 { }
5.9 类属性
- 所有的类属性必须定义可见性
- 不能用var关键词来定义属性
- 不要用一个语句生命多个属性
5.10 类方法
- 类方法的左花括号必须放在方法名的下一行
- 所有的类方法必须生命可见性
- 参数列表中,逗号前不得有空格,逗号后必须有一个空格
- static 必须放在可见性声明之后