您的位置:首页 > 编程语言 > PHP开发

PHP编码规范(2)

2014-03-01 23:08 162 查看
4、字符串的使用

字符串声明单引号与双引号的差别:

(1)单引号中,任何变量($var)、特殊转义字符等都不会解析,因此PHP解析速度更快,转移字符仅仅支持“\‘”和“\\”这种队单引号和反斜杠本身的转义。

(2)双引号中,变量($var)值会带入字符串中,特殊转义字符也会被解析成特定的单个字符,还有一些专门针对上述两项特性的特殊功能性转义,例如“/$”和“{$arr['key']}”。这样虽然编程方便,但是解析会变慢。

使用单引号的情况:

(1)字符串为固定值,不包含特殊转义字符;

(2)字符串不包含变量的文字;

(3)关联数组的下表不为整型,而是字符串型。eg:$arr['key']

(4)SQL语句,所有数据都必须加单引号,以免可能的注入漏洞和SQL错误。

使用双引号的情况:

(1)字符串中的变量需要替换;eg:$var = "hello, $world";

(2)当文字中包含单引号,那么字符串就要用双引号包起来,主要针对SQL语句;

(3)正则表达式。

注意:所有数据在插入数据库之前,均要进行addslashes()处理,以免特殊转义字符未经转义,在插入数据库的时候出现错误。

5、命名规则

命名规则:以最少的字母达到最容易理解的意义。

(1)文件名:

所有含有PHP代码的文件均已.php为扩展名,分为几类:

* 能够被URL直接调用的程序,直接用程序名+.php的方式命名;

* 类库程序只能被其他程序引用,而不能独立运行。其中不能包含任何流程性的、不属于任何类的代码,类文件的后缀统一为.class.php;

* 函数库也只能被其他程序引用,而不能独立运行,其中不能包含任何流程性的、不属于任何函数的程序代码,函数文件的后缀统一为.func.php;

* 只能被其他程序引用,而不能独立运行,其中不能包含任何函数或类代码的程序代码,文件见后缀统一为.inc.php。

(2)目录名

多以复数形式出现,如./templates ./images

另外在所有不包含普通程序(即能够被URL直接调用的程序)目录下放置1个index.html文件,内容为空白。除根目录外,几乎所有的目录都属于这一类型,因此开发者需要在所有目录全部放入空的index.html文件,以避免当http服务器的Directory容器中Options Indexes打开时,服务器文件被索引和列表。

(3)类名

* 类名应有面属性,杜绝一切拼音或拼音英文混杂的命名方式;

* 类名包含字母字符,不允许使用数字和其他字符;

* 如果类名包含多个字符,应使用驼峰式命名方式,每个单词的第一个字母必须大写,不允许连续大写。

(4)函数和方法名

* 函数名应具有描述性,杜绝一切拼音或拼音英文混杂的命名方式;

* 函数名包括字母字符,不允许使用数字和其他字符;

* 函数名首字母小写,当包含多个单词时,后面的每个单词的首字母大写;

* 函数名应带有’get‘、‘set’等动作性描述;

* 可以声明像函数名前有下划线的形式,表示该函数为该类的私有方法,外部不允许访问。

(5)变量名

* 变量名应具有描述性,杜绝一切拼音或拼音英文混杂的命名方式;

* 变量名包括数字,字母和下划线,不允许使用其他字符。变量名最好使用项目中有据可查的英文缩写方式,尽量使用一目了然的形式;

* 变量名以字母开头,如果包含多个单词,首字母小写,后面每个单词首字母大写;

* 可以合理的对过长的命名缩写;

* 必须清楚所用单词的词性,在权限相关的范围内,大都使用$allow***或$is*****形式,前者接动词,后者接形容词;

* 除了在循环体外,其他位置允许但不提倡使用没有描述一一的字母为变量,如$i, $j。

(6)常量名

* 常量名应具有描述性,杜绝一切拼音或拼音英文混杂的命名方式;

* 常量名包括数字,字母和下划线,不允许使用其他字符。变量名最好使用项目中有据可查的英文缩写方式,尽量使用一目了然的形式;

*常量名所有字母必须大写;

*PHP的内建值TRUE,FALSE,NULL必须大写。

6、语言结构

(1)if / else / else if

if结构中,前花括号必须和条件语句在同一行,后花括号单独在最后一行, 其中内容使用缩进,else 和else if 与前后两个大括号同行,左右各一个空格。

* 首括号与关键字同行,尾括号与关键字同列;

* if中条件语句的圆括号前后必须有一个空格;

* 括号内的条件语句中操作符用空格分开;

* 允许但不鼓励elseif的写法,建议使用else if的写法;

* 在条件语句中存在多个运算符的时候,使用括号说明优先级,避免因为运算符概念混乱造成逻辑错误;

* 在判断条件中明确判断内容的变量类型,使用正确的类型,不允许在判断结果为TRUE的时候使用1。

(2)switch

* switch在条件语句的圆括号前后有一个空格;

* switch代码使用缩进,case内的代码也要缩进;

* switch结构中,break的位置视逻辑而定,与case在同一行,或另起一行,当同一个switch下的break的位置应该一致;

* switch应当有default语句作为结束;

* 允许但不建议使用两个或两个以上的case对应一个break。

(3)数组声明

* 索引不能为负数,当索引不存在,建议索引以0开始;

* 数组中逗号后面间隔一个空格;

* 如果元素过多要换行,在每个连续行要用缩进将开头对齐;

* 如果使用key=>value方式,建议将数组分成多行;

(4)类的声明

* 开始的左大括号与类的定义为同一行;

* 每个类有一个符合PHPDocumentor标准的文档块;

* 类中的代码使用缩进;

* 每个PHP文件中只有一个类

(5)类中成员属性和变量的声明

* 类中成员声明放到类的首部,使用合适的权限限定外部访问级别;

* 任何变量在累加或者直接显示前进行初始化。

* 判断一个无法确定的变量时,可以使用empty()或者isset(),而不是直接使用if($var);

* 判断是否为数组,使用is_array();

(6)函数的定义和使用

* 声明函数时参数的名字和变量的命名规范一致;

* 函数定义的左小括号,与函数名紧挨,不用空格;

* 开始的左大括号与名称一行,中间加一个空格;

* 如果使用具有默认值的参数,应该位于参数列表的后面;

* 函数不管在调用还是在声明的时候,参数与参数之间都要加一个空格;

* 检查杜绝函数其实缩进位置与结束缩进位置不同的现象;

* 建议不要使用全局函数;

* 在使用系统函数时,除非必要,不要使用PHP扩展模块中的函数,如果使用,也应该加入判断,这样服务器在不支持此函数的时候,也可以进行必要的处理。

7、其他规范细节

(1)代码重用和包含调用

* 在同一个程序中不要出现两段或更多相同或相似的代码,及时在不同的程序中,也尽量避免;

* 代码的有效重用不仅可以减少效率的损失与资源的浪费,也有利于代码的修改和更新;

* 重用代码的调节可以使用require和include,require在PHP程序执行之前就预先读入文件,而include则在使用include的位置才会读入。

(2)错误报告级别

* 在软件开发和调试阶段,请在全局文件中使用error_reporting(E_ALL),作为默认的错误报告级别,此级别最为严格,能够报告程序中所有的错误,警告和提示;

* 在软件发布时,使用error_reporting(E_ERROR | E_WARNING |E_PARSE),作为默认的错误报告级别,以利于用户使用无谓错误提示信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: