PHP 代码风格
概述
本文档指定基本的 php 编码风格约定。
备注
本文档中风格和格式的用法:
类别名称
?
项目标题
Coding Style Conventions ............................................................................................................... 1
1. General Rules .......................................................................................................................... 3
2. Formatting ................................................................................................................................ 4
3. Naming ..................................................................................................................................... 9
4. Documentation ....................................................................................................................... 11
5. Programming .......................................................................................................................... 14
6. Others .................................................................................................................................... 17
1. 通用规则
原则
?
?
?
简单, 清楚, 完整性, 一致性 鲁棒性 第一次就要做正确
2. 格式
PHP
? ?
?
? ? ? ? ? ?
?
文本文件的编码使用 'UTF-8' 文本文件换行定界符使用 '\n' (Unix 类型)
当我们创建和编辑文件时,使用Unix换行('\n')代替DOS换行('\r\n');
约定一个tab等于四个空格
tab 在不同的平台下表现不同,对于tab而言总是使用空格代替他
设置所有编辑器中的tab键等于四个空格
PHP 标签: 总是使用 ''
缩进: 在PHP中的每个缩进都使用tab等于四个空格 使用空行分隔逻辑块 行末尾不允许有空格 使用 "else if" 代替 "elseif" 对于 'if', 'while', 'for', 等逻辑块使用括号括起,哪怕只有一行逻辑,便于阅
不允许在新行上写开口括【左括号】
?
?
? ?
?
函数应该遵循下列规则
函数名字与参数列表的开括号之间没有空格,他们两个看做一整体,这个整体的两边需要有 各有一个空格,然后参数列表里,每个参数相对前一个参数需要有一个空格。
参数
列表中有默认值的参数应放在参数列表最后面 字符串: 普通的字符串使用单引号('),如果字符串中需要解析PHP变量时使用 双引号("")
在
PHP中双引号(") 解析,单引号(')不解析. 在双引号字符串上PHP要做额外的
工作,所以 他们两个有一些微妙的性能差别。即便双引号中的变量可以被解释,但也只限于简单的变量 名,当使用复杂的名字时,必须将变量独立出去,如一个变量组成2维数组
这样的句子不能被正确解释,复杂的变量名,可以将变量用大括号括起来
?
为了保证一致性,在类中的不是其他描述符['private','protected']的成员函数 和成员变量都要添加关键字['public'] ,在使用['private','protected']描述符 的成员函数和成员变量的前面加下划线[’_’],['public']描述符不需要下划线
[’_’]
SQL
?
? ?
所有的数据库名、表名、字段名、别名等全部加上反引号[`user`] 在一句SQL中明确的写出字段名是必须的,不要使用 '*'去代替,除非你需要 ? ? ? ?
总是使用 '<>' 代替 '!=' 总是使用 'AND' 代替 '&;&;' 总是使用 'OR' 代替 '||' 使用 '{field} BETWEEN [min] AND [max]' 代替 '{field} >= [min] AND
{field} <= [max]'
? ?
相应地, 使用 '{field} NOT BETWEEN [min] AND [max]' 使用时间作为判断条件时,除UNIX时间戳外,时间格式应该是与数据库中的 字段格式一致
3. 命名约定
PHP
? ?
?
?
?
?
?
?
? ? ? ? ? ? ? ?
关于'null', 'true', 'false'所有字符全部小写 使用有意义的名字命名
关于文件、类、函数、变量、参数等使用有意义的名字命名,不要使用缩写词。
除了在“for" 循环的表达式中可使用$i, $j 和异常 $e
目录、文件名:全部小写,使用下划线[‘_’]分隔单词
例子: admin_member_list.php, admin_member_lookup.php, file_system
关于一组有关联操作的文件使用前缀来便于分辨
例子: admin_member_list.php, admin_member_lookup.php ThinkPHP的Action例外,每个单词的首字母大写,多个单词使用驼峰式。
类名:Class names: 使用能够描述出类的大概含义的单词命名;每个单词首 字母大写,多个单词使用驼峰式。
例子: Circle, FilledCircle, ShadedFilledCircle
全局函数、类成员函数: 第一个单词的第一个字母小写,其他单词的第一个 字母大写,多个单词使用驼峰式。
例子: draw(), drawLine(), getName()
变量、类成员变量、函数参数:第一个单词的第一个字母小写,其他单词的第 一个字母大写,多个单词使用驼峰式
例子: $phpSelf, $currentTheme
常量名:全部大写,使用下划线[‘_’]分隔单词
例子: PI, MAX_BUFFER_SIZE
以下为文件名的命名规则
.php -> 普通文件
.class.php -> 类文件 abstract_XXXX.class.php -> 抽象类 interface_XXXX.class.php -> 接口类 .def.php -> 定义常量文件 .cfg.php -> CONFIG配置