
2.7 PHP编码规范

编码规范对于编程人员来说非常重要。很多初学者对编码规范不以为然,认为对程序开发没什么帮助,这种想法是错误的。
在如今的Web项目开发中,不再是一个人完成所有的工作,尤其是一些大型的项目,需要很多人共同完成。在项目开发中,难免会有新的开发人员参与进来,如果前任编写的代码没有按编码规范编写,新的开发人员在阅读代码时就会有许多的问题。本节介绍关于编码规范的一些知识。
2.7.1 什么是编码规范
以PHP开发为例,编码规范融合了开发人员长期积累的经验,形成了一种良好的统一的编程风格,这种编程风格会在团队开发或二次开发时具有事半功倍的效果。编码规范是一种总结性说明和介绍,并不是强制性的规则。从项目长远的发展以及团队效率考虑,遵守编码规范是非常必要的。
遵循编码规范的好处如下:
- 开发人员可以了解任何代码,理清程序的状况。
- 提高代码的可读性,有利于相关设计人员的交流。
- 有助于程序的维护,降低软件成本。
- 有利于团队管理,实现团队资源的可重用。
2.7.2 PHP书写规则
1. 缩进
使用制表符(TAB键)缩进,缩进单位为4个空格。如果开发工具的种类多样,则需要在开发工具中统一设置。
2. 花括号{}
有两种花括号放置规则。
(1)将花括号放到关键字的下方、同列。

(2)首括号与关键词同行,尾括号与关键字同列。

3. 关键字、圆括号、函数、运算符
(1)不要把圆括号和关键字紧贴在一起,用空格隔开它们。

(2)圆括号和函数要紧贴在一起,以便区分关键字和函数。

(3)运算符与两边的变量或者表达式要有一个空格(字符连接运算符“.”除外)。

(4)尽量不要在return返回语句中使用圆括号。

2.7.3 PHP命名规则
一般而言,类、函数和变量的名字应该能够让阅读者容易地知道代码的作用,尽量避免使用模棱两可的名字。
1. 类命名
- 使用大写字母作为词的分隔,其他字母均使用小写。
- 名字的首字母使用大写。
- 不要使用下画线(“_”)。
例如:Name、ClassName、People、Animal等。
2. 类属性命名
- 属性命名应该以字符m为前缀。
- m后采用与类命名一致的规则。
- m总是在名字的开头起修饰作用,就像以r开头的名字表示引用变量一样。
例如:

3. 方法命名
方法的作用是执行一个动作,达到一个目的。所以,方法的名称应该说明方法是做什么的。一般名称的前缀和后缀都有一定的规律,如Get(得到)、Set(设置)。方法的命名规范与类命名是一致的。

4. 方法中参数命名
第一个字符使用小写字母,在首字符后的所有字符首字母都大写。

5. 变量命名
所有字母都使用小写,使用“_”作为每个词的分界。
例如:$string、$array、$first_name等。
6. 引用变量/函数命名
引用变量/命名应带有r前缀。

7. 全局变量
全局变量应该带前缀g。例如:global=$gTest。
8. 常量、全局常量
常量、全局常量应该全部使用大写字母,单词之间用“_”分隔。

9. 静态变量
静态变量应该带前缀s。

10. 函数命名
函数名中所有的字母都使用小写字母,多个单词使用“_”分割。

11. 数据库表名命名
- 表名均使用小写字母。
- 对于普通数据表,使用“_t”结尾。
- 对于视图,使用“_v”结尾。
- 对于多个单词组成的表名,使用“_”间隔。
例如:student_score_t和book_store_v等。
12. 数据库字段命名
- 全部使用小写。
- 多个单词间使用“_”间隔。
例如:user_name、user_age等。