PHP编码规范(2)

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),作为默认的错误报告级别,以利于用户使用无谓错误提示信息。

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值