PHP编码规范

jopen 10年前

为了提高工作效率,保证开发的有效性和合理性,并最大程度提高程序代码的可读性和可重复利用性,提高沟通效率,需呀一份代码编辑规范。

一、文件标记:

 1.所有php文件,其代码标记均采用完整php标签,不建议使用短标签(短标签容易和xml混淆,php从5.4开始默认不支持短标记)。

 2.对于只有php的代码文件,建议省略结尾处的‘?>’。这是为了防止多余的空格或其他字符影        响到代码。

二、文件和目录命名

 1.程序文件名和目录名均采用有意义的英文命名,不使用拼音和无意义的字母,只允许出现字母、数字、下划线和中划线字  符,同时必须以‘.php’结尾(模板文件除外),多个词间使用驼峰命名法。

    例://类统一采用:DemoTest.class.php

          //接口统一采用:DemoTest.interface.php

          //其他按照各自的方式:demoTest.{style}.php

三、文件目录结构

  1. 规范的目录结构有助于团队协作开发和后期维护。

    ——app            //独立的应用

    ——class          //单个的类文件,共用的类文件

    ——conf/inc    //配置文件或目录

    ——data          //数据文件或目录

    ——doc           //程序相关文档

    ——htdocs       //document_root

    ——images       //所有图片文件存放路径

    ——css            //css文件

    ——js               //js文件

    ——lib              //共用类库

    —template    //模板文件

    —tmp            //临时文件目录

    1. ——cache    //缓存文件

    2. ——session  //SESSION文件

    3. ——template_c    //编译后的模板文件

    4. ——other

    ——upload      //上传文件

    ——manage    //后台管理文件目录

    </ol>

    四、命名规范

    1.变量命名:php中变量区分大小写,一个有效的变量名由数字、字母或下划线开头,后面跟任意数量的字母、数字、下划线。

        a)程序整体以驼峰命名法,以小写字母开始,同时命名要有意义。(function displayName())

        b)PHP全局变量键值两边都有‘_’,中间用驼峰命名法命名。($_GLOBAL['_beginTime_'])

        c)普通变量整体采用驼峰命名法,建议在变量前加表示类型的前缀。不确定类型的以大写字符开头。

        d)函数名要尽量有意义,尽量缩写。

    2.类及接口命名:

        a)以大写字母开头。

        b)多个单词组成的变量名,单词之间不用间隔,各个单词首字母大写。

        c)类名与类文件名保持一致。

        d)程序中所有的类名唯一。

        e)抽象类应以Abstract开头。

        接口命名规则:

            i)采用和类相同的命名规则,但在其命名前加‘i’字符,表示接口。

            ii)尽量保持和实现它的类名一致。

    3.数据库命名:在数据库相关命名中,一律不出现大写。

        a)表名均使用小写字母。

        b)表名使用同一的前缀且前缀不能为空。

        c)对于多个单词组成的表名,使用‘_’间隔。

        d)表字段命名规则。

                i)全部使用小写字母。

                ii)多个单词不用下划线分割。

                iii)给常用字段加上表名首字母做前缀。

                iv)避免使用关键字和保留字。

    五、注释规范

    1.程序注释:写在代码前面而不是后面,单行代码按照习惯写在代码尾部;大段注释采用/**/的方式,通常为文件或函数的顶部,代码内部使用'//';注释不宜太多;代码注释应该描述为什么而不是做什么,给代码阅读者提供最主要的信息。

    2.文件注释:文件注释一般放在文件的顶部,包括本程序的描述、作者、项目名称、文件名称、时间日期、版本信息、重要的使用说明(类的调用,注意事项等)。版本更改要修改版本号,并加上mofify注释。

    3.类和接口注释:按照一般的习惯,一个文件只包含一个类。

    4.方法和函数注释:方法和函数的注释写在前面,通常需要表明信息的主要可见性、参数类型和返回值类型。

        /**

        *    连接数据库

        *    @param string $dbhost    数据库服务器地址

        *    @param string $dbuser    数据库用户名

        *    @param string $dbpwd    数据库密码

        */

    六、代码风格

    1.缩进和空格:使用4个空格做为缩进,不使用Tab键;变量赋值时,等号两边留出空格。($url = '$_GET['url']';)

    2.语句断行:尽量保证程序语句一行即一句;尽量不要使一行的代码过长,80个字符以内;如果一行的代码太长,请使用类似于‘.=’方式断行连接;执行数据库的sql语句操作时,尽量不要再函数内写sql语句,而先用变量定义sql语句,然后在执行操作的函数中调用定义的变量。

    3.更好的习惯:在代码中使用下面列举的方法,可以使代码更优雅。

            1):多使用php中已经存在的常量,而不要自己定义。

                例://换行

                      echo $msg."\r\n";

                      echo $msg,PHP_EOL;

                    php中PHP_EOL是一个预定义常量,表示一行结束,随着所使用系统不同,使用PHP_EOL代码可移植性更高

            2):在echo中使用逗号做连接符,比用‘.’做连接符代码更美观。

            3):单引号的效率高于双引号,但二者在使用上有区别,学会使用printf函数。

                例://echo

                    echo  '每个'.$scholl.'大约有'.floor($avg).'个学生';

                      //printf

                   $format = '每个%s大于有$d个学生';

                    printf($format,$school,$avg);

            4)  :详细的注释

            5):不要 滥用语法糖,语法糖就是语言中的潜规则,即不具备普遍代表性的语法。