logo资料库

百度技术部内部php编码规范.doc

第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
资料共32页,剩余部分请下载后查看
0 前言
1 排版
2 命名
3 注释
4 编码原则
5.安全编码
附录 PHP安全编码规范
一、安全代码规范
二、安全配置规范
三、分析
1.准则
1.1 对所有从客户端传入的数据不信任
1.2最小化原则
1.3 安全的编码不依赖任何安全配置
1.4 程序错误信息对外界透明
2. 细则
2.1 输入数据作为数据库操作的一部分
2.2输入参数与文件操作相关
2.3 输入参数与命令执行相关
3.安全配置
3.1 register_globals
3.2magic_quotes_gpc
3.3log_errors
百度PHP编码规范 目录 0 前言 ......................................................................................................................................... 2 1 排版 ......................................................................................................................................... 3 2 命名 ......................................................................................................................................... 7 3 注释 ......................................................................................................................................... 9 4 编码原则 ................................................................................................................................12 5.安全编码 .................................................................................................................................15 附录 PHP 安全编码规范 ...........................................................................................................16 仅供内部使用 1
0 前言 编码风格没有太多的好坏之分, 最重要的是风格保持一致,编码规范有助于规范我们编码 的风格,使代码具有更好的可读性。 PHP 在百度内部应用得越来越广泛,但是却缺乏相应的编码规范支持,编码风格百家齐放, 不利于我们代码的维护和传承, 根据大家平时的开发情况,制定了此 PHP 编码规范。 每项规范前面的(强制) 代表该规范需要强制执行, (建议)代表推荐执行但不强制。 注: 文中所有的变量名前面为了方便没有加”$”, 示意即可。 PHP 编码规范制定人: 王继平、刘斌、宋琦、庞博、李强、洪定坤、张东进 PHP 安全编码规范制定人: SYS 部门 SSL 组 仅供内部使用 2
1 排版 ¹1-1:(强制)程序块要采用缩进风格编写,缩进的空格数为 4 个。 说明:不同的缩进风格对代码的可读性影响很大,以 tab 为缩进单位在不同的 tab step 下可读性也相差很多,所以将缩进定为一个 soft tab 即 4 个空格,这样在所有环 境下缩进都会保持一致。 ¹1-2:(建议)关键字与其后的左括号之间有一个空格,而函数名与左括号之间不应有任何字符 包括空格。 说明:虽然很多情况下编辑器的highlight已经做了区分,但是从格式上区分关键字和函 数适用于所有的情况。 如: 关键字 if (a > b) 函数名 funcA() ¹1-3:(建议)开始的大括号位于一行的末尾,结束的括号位于最末一行后,且独占一行。 如: if (a > b) { } “{”独占一行的风格也可以, 但是建议两种风格只取其一。 仅供内部使用 3
¹1-4:(强制)if/while等结构体,即使只有一行,也必须加上左右花括号,不允许写成一 行。 说明: 这样做可读性更好,并且方便修改。 如: if (a > b) { a = 1; } ¹1-5:(建议)适当控制每行代码的长度(一般不超过 80 个字符) 说明: 代码更美观, 可读性更好 ¹1-6:(强制)elseif语句使用elseif形式,不使用else if形式。 说明: elseif 为标准语法 ¹1-7:(建议)函数名与其后的左括号之间不应有任何字符(包括空格), 函数调用的左括号与其第一个参数之间不应有任何字符(包括空格) 最后一个参数与右括号之间不应有任何字符(包括空格) 参数列表的逗号后面应有一个空格 如: funcA(a, b, c) { } 仅供内部使用 4
¹1-8:(建议)避免由于对错误的条件做判断带来if的嵌套。 说明: 减少if/else嵌套, 更利于代码逻辑的理解。 不推荐的方式: if (a === false) { // error handle } else { if (b === false) { // handle } } 推荐的方式: if (a === false) { // error handle } if (b === false) { // handle } ¹1-9:(强制)如果过长的话需要另起一行。if 语句的条件若较多较长,应折行;新行以逻辑 运算符起始,与第一行 if 左括号后的第一个字符对齐;折行后,每行条件具有独立而明确 的语义。 说明: 这样做逻辑更一目了然。 if (a > b && c > d && e > f && h > j && z > x) { } ¹1-10:(建议)多行的”=”可能的话尽量用空格对齐。 = 1; a ab = 2; abc = 3; 仅供内部使用 5
¹1-11: (强制)Switch语句中每个case的break必须和case间有 4 个空格的缩进。 case ‘A’: = 2; a break; ¹1-12:(强制)初始化array如果采用多行结构时,数据项部分需要缩进,且最后一个数据项 后面的逗号不可省略。 说明:这样做在修改代码增加数据项的时候不容易出现语法错误。 $a = array( 'a' => 'b', 'b' => 'c', 'c' => 'd', ); 仅供内部使用 6
2 命名 ¹2-1:(强制)全局变量以g_开头。 说明: 全局变量对代码影响很大,以g_开头变能在代码中一眼看出是全局变量。 如: g_count; ¹2-2:(强制)常量命名使用全部大写字符,单词之间以'_'连接。 如: PAGE_NUM ¹2-3:(强制)对于代码中的常量,必须用常量或define表示,不允许直接写在代码中。 如: define('PAGE_NUM', 3); ¹2-4:(强制)关键字true、false、null必须小写 ¹2-5: (强制)私有函数命名需加上 '_'前缀。 private function _myPrivateFunc() { } 仅供内部使用 7
¹2-6: (强制)类method命名采用驼峰命名, 普通function采用过程函数风格命名。 如: 类 method: public function getName() { } 普通 function: function show_me_the_money() { } 2-7:(强制)文件(除了类)命名使用小写字母,单词之间以'_'连接。 如: show_lemma.php 2-8: (强制)配置文件的名称为配置文件名 + .conf.php, 不涉及类的都小写通过”_”连接。 如: good_version.conf.php 2-9 : (建议)类名应以大写字母开头,每个单词的首字母大写。 如: ActionController 仅供内部使用 8
分享到:
收藏