来源:http://blog.csdn.net/sinat_34990639/article/details/62423641
php编码规范
php标准委员会(php-styleguide@baidu.com):
许立强(TB-TD, 主席)贾春鑫(PS)廖慧琴(LBS RD)仇昊(VS)全伟(CS)
王岩(KS)颜玉刚(music-PD)张东进(SUMERU) 张振平(CID)王伟冰(贴吧-技术部)
参与规则制定:雷国强(GIS)李红亮(GPM)王霄池(SCloud)张健(CS)许鹏(GIS)鲁超伍(Mobile Search RD)杜伟(KS)孙笑(WD)v_sunhuai
1. 前言
- 源码文件必须采用UTF-8编码,且不得有BOM头,某些历史遗留的GBK模块除外。
- 编码风格没有太多的好坏之分, 最重要的是风格保持一致,编码规范有助于规范我们编码的风格,使代码具有更好的可读性。
- PHP在百度内部应用得越来越广泛,但是却缺乏相应的编码规范支持,编码风格百家齐放,不利于我们代码的维护和传承, 根据大家平时的开发情况,制定了此PHP编码规范。
- 每项规范前面的[强制]代表该规范需要强制执行,[建议]代表推荐执行但不强制。
- 注: 文中所有的变量名前面为了方便没有加”$”, 示意即可。
- 本文档风格约定部分可能跟你的喜好有冲突,请尽量用包容的心态来阅读。有任何问题或建议,欢迎跟我们讨论: php-styleguide@baidu.com
2. 排版
2.1. [强制][PHP002] 程序块要采用缩进风格编写,缩进的空格数建议为4个,单模块内必须统一。
解释
- 不同的缩进风格对代码的可读性影响很大,以tab为缩进单位在不同的tab step 下可读性也相差很多,所以将缩进定为一个soft tab即4个空格,这样在所有环境下缩进都会保持一致。
2.2. [建议]关键字与其后的左括号之间有一个空格,而函数名与左括号之间不应有任何字符包括空格。
解释
- 虽然很多情况下编辑器的highlight已经做了区分,但是从格式上区分关键字和函数适用于所有的情况。
-
示例
-
2.3. [建议]开始的大括号位于一行的末尾,结束的括号位于最末一行后,且独占一行。首括号也可另起一行,但一个模块内必须统一。
-
示例
-
2.4. [强制] [PHP003] if/while等结构体,即使只有一行,也必须加上花括号,不得写成一行。
解释
- 这样做可读性更好,并且方便修改。
-
示例
-
2.7. [建议]函数名与其后的左括号之间不应有任何字符(包括空格) 函数调用的左括号与其第一个参数之间不应有任何字符(包括空格) 最后一个参数与右括号之间不应有任何字符(包括空格) 参数列表的逗号后面应有一个空格
-
示例
-
2.8. [建议]避免由于对错误的条件做判断带来if的嵌套。
解释
- 减少if/else嵌套, 更利于代码逻辑的理解。
示例
-
-
不推荐的方式:
-
-
-
-
推荐的方式:
-
-
2.9. [建议]如果过长的话需要另起一行。if 语句的条件若较多较长,应折行;新行以逻辑运算符起始,与第一行 if 左括号后的第一个字符对齐;折行后,每行条件具有独立而明确的语义
解释
- 这样做逻辑更一目了然。
-
示例
-
2.10. [建议]多行的”=”可能的话尽量用空格对齐。
-
示例
-
2.11. [强制] [PHP009] Switch语句中每个case的break必须和case间有缩进。
-
示例
-
2.12. [强制] [PHP008] 初始化array如果采用多行结构时,数据项部分需要缩进,且最后一个数据项后面的逗号不可省略。
解释
- 这样做在修改代码增加数据项的时候不容易出现语法错误。
-
示例
-
3. 命名
3.1. [强制] [PHP025] 全局变量以g_开头。
解释
- 全局变量对代码影响很大,以g_开头便能在代码中一眼看出是全局变量。
-
示例
-
3.2. [强制] [PHP004] 常量命名使用全部大写字符,单词之间以’_’连接。
-
示例
-
3.3. [建议]对于代码中的常量,建议用常量或define表示,不应直接写在代码中。
-
示例
-
3.5. [强制] [PHP026] 类method命名采用驼峰命名, 普通function采用过程函数风格命名。
示例
-
-
类method:
-
-
-
-
普通function:
-
-