• Zend Framework的PHP编码规范【1】


    1. 概述... 2

    1.1. 文档主要内容... 2

    1.2. 目标... 2

    2. PHP文件格式要求... 2

    2.1. 一般要求... 2

    2.2. 缩排... 2

    2.3. 行最大字符数... 2

    2.4. 行结束符... 3

    3. 命名规范... 3

    3.1. 类的命名... 3

    3.2. 接口类的命名... 4

    3.3. 文件命名... 4

    3.4. 函数与方法的命名... 4

    3.5. 变量命名... 5

    3.6. 常量命名... 5

    4. 编码风格... 6

    4.1. PHP代码定界符... 6

    4.2 字符串书写风格... 6

    4.3. 数组... 7

    4.4. ... 8

    4.5. 函数与方法... 9

    4.6. 控制语句... 11

    4.7. 内部文档化

    1. 概述

    1.1. 文档主要内容

    本文档是对PHP开发的规范性提供指导和建议,主要内容包括:

    l        PHP文件格式要求

    l        命名规范

    l        编码风格规范

    l        代码内文档化要求

    1.2. 目标

    编码规范对于任何一个开发项目都是很重要的,尤其是多人协作的情况,良好的编码规范意味着代码高质量、较少bug,以及易于维护。

    2. PHP文件格式要求

    2.1. 一般要求

    对于只包含PHP代码的文件,不允许使用PHP结束标签(”?>”),尽管PHP语法并不要求必须这么做,但去掉这个结束标签,可以避免尾部的空白字符意外输出,造成不必要的影响。

    重要:虽然在PHP里可以通过 __HALT_COMPILER() 来包含任意的二进制数据,但在本规范里禁止这么做,只有在某些安装了特殊脚本的情况下才允许这么做。

    2.2. 缩排

    缩进的时候使用4SPACE字符(键),不要使用TAB字符(键)。

    2.3. 行最大字符数

    每行不要超过80个字符,即,在实际开发过程中每行的代码尽量不要超过第80列这个边界,稍微超过也可以,PHP代码每行最大字符数是120

    2.4. 行结束符

    行结束符采用UNIX文本文件标准,即每行以“换行符(LF)”结束,在ASCII码中,换行符是的十进制值为10,十六进制值为0x0A

    不要使用Macintosh系统的标准:以回车符(CR,十六进制值是0x0D)为行结束符。

    也不要使用Windows系统的标准:以回车/换行(CRLF0x0D, 0x0A)为行结束符。

    3. 命名规范

    3.1. 类的命名

    Zend Framework引入了一种层级类命名方法,可以通过类的名称直接映射到该文件实际存储的目录。在这个层级结构中,Zend Framework的根目录是"Zend/",所以的类文件都按一定目录层次分别保存。

    类的名称只能包括字母和数字,但不推荐使用数字。下划线只能用于替换路径分隔符的情况,比如文件名"Zend/Db/Table.php"会映射到类的名称"Zend_Db_Table"

    如果类的名称由多个单词组成,那么每个单词的首字母都必须大写,其他字母小写,例如类名"Zend_PDF"是不允许的,应该命名为"Zend_Pdf"

    Zend Framework中由Zend公司(或者参与Zend Framework开发的合作伙伴公司)发布的类,其名称总是以"Zend_"开头,其相应的文件保存在层级目录"Zend/"中。

    规范的类命名的例子:

    Zend_Db

    Zend_View

    Zend_View_Helper

    重要: 在项目开发中不属于Zend框架的代码,例如由框架使用者自己开发代码,类的命名一定不要以"Zend_"开头,只有Zend公司(或参与Zend Framework开发的合作伙伴公司)发布的类,才能使用”Zend_”命名。

    3.2. 接口类的命名

    接口类的命名规则与其他类的命名规则类似(参看上节),只是最好必须以单词"Interface"结尾,举例如下:

    Zend_Log_Adapter_Interface

    Zend_Controller_Dispatcher_Interface

    3.3. 文件命名

    对于所有文件,只有字母、数字、下划线和短划线("-")可以使用,不允许使用空格和其他特殊字符。

    只要是包含有PHP代码的文件都必须以".php"为文件名后缀,下面是一些规范的文件命名的例子,这几个例子与上一节类命名的例子相对应。

    Zend/Db.php

    Zend/Controller/Front.php

    Zend/View/Helper/FormRadio.php

    正如上面的例子,文件命名与类命名必须一致。

    3.4. 函数与方法的命名

    函数名只能包含字母和数字字符,不允许使用下划线,虽然允许使用数字,但并不提倡。

    函数名必须以小写字母开始。如果函数名包含多个单词,那么除了第一个单词,其他单词的首字母都大写,这就是通常所称的骆驼法则("studlyCaps""camelCaps")。

    为增强代码的可读性,允许命名一定程度的详细和冗长。

    下面是一些合乎规范的函数命名的例子:

    filterInput()

    getElementById()

    widgetFactory()

    对于面向对象编程,对象的存取器总是以"get""set"为前缀;当使用设计模式时,比如singleton或工厂模式(factory),方法的命名通常会包含模式的名称,这样可增强代码可读性,并且能一目了然的知道采用了何种设计模式。

    本规范不允许有全局范围的函数(即游离于对象之外的函数),这些函数应该包装进一个静态类。

    3.5. 变量命名

    变量名只能包含字母和数字字符,不允许使用下划线(对于下面的情况例外),同样,数字也是允许但不提倡的。

    对于声明为privateprotected的类成员变量,变量名必须以一个下划线开头,这也是变量命名规则中唯一允许使用下划线的情况,而声明为public的成员变量则不允许使用下划线。

    与函数命名规则(参看3.3节)一致,变量命名必须以小写字母开始,而之后的单词,遵循首字母大写的骆驼法则(camelCaps)。

    为了增强可读性,变量命名同样需要一定程度的详细和冗长,并且要有实际意义。类似于$i$n这样的变量命名,除了用于较少代码的循环语句,在其他情况下是不允许的。如果循环语句超过20行代码,那么用于循环的索引变量也应该使用有意义的名字。

    3.6. 常量命名

    常量名允许使用字母和数字字符,与函数命名和变量命名等不同的是,他也允许使用下划线,对数字的使用也没有限制。

    常量的所有字母都必须大写。

    常量必须使用const指示符定义为类成员,在全局范围使用define定义常量虽然允许,但也不提倡。

    4. 编码风格

    4.1. PHP代码定界符

    PHP代码定界符必须使用完整的标准的PHP定界标签:

    <?php

    ?>

    禁止使用短标签。

    4.2 字符串书写风格

    4.2.1 纯文字字符串

    对于纯文字字符串(不包含变量替代),必须使用单引号包含:

    $a = 'Example String';

    4.2.2. 含有引号的字符串

    对于包含有引号的纯文字字符串,允许使用双引号来包含,这种方式多用于SQL语句的书写:

    $sql = "SELECT `id`, `name` from `people` WHERE `name`='Fred' OR `name`='Susan'";

    上面的书写方法比使用转义符加引号更加清晰,可读性强。

    4.2.3. 含有变量替代的字符串

    对于含有变量替代的字符串,以下两种方式都是允许的:

    $greeting = "Hello $name, welcome back!";

    $greeting = "Hello {$name}, welcome back!";

    为了书写的连贯性,以下方式是不允许的:

    $greeting = "Hello ${name}, welcome back!";

    4.2.4. 字符串连接

    多个字符串可以使用点操作符(".")连接,但点操作符前后必须各有一个空格,目的是增强可读性。

    $company = 'Zend' . 'Technologies';

    当使用点操作符连接多个字符串时,可以把语句拆分成多行来增强可读性,对于这种情况,每个后续行应该使用空格填充,使点操作符刚好对齐在等号下面:

    $sql = "SELECT `id`, `name` FROM `people` "

         . "WHERE `name` = 'Susan' "

         . "ORDER BY `name` ASC ";

    4.3. 数组

    4.3.1. 数字索引数组

    数组的索引不允许使用负数。

    索引数组可以使用任何非负整数开始,但并不提倡这么做,建议每个数组都应该使用索引0开始。

    当使用array关键字定义索引数组时,每个逗号后面都应该跟随一个空格字符,目的是增强可读性:

    $sampleArray = array(1, 2, 3, 'Zend', 'Studio');

    使用array关键字定义索引数组的语句可以拆成多行,这种情况下每个后续行都应该使用空格填充头部,使每行以如下的形式保持对齐:

    $sampleArray = array(1, 2, 3, 'Zend', 'Studio',

                         $a, $b, $c,

                         56.44, $d, 500);

    4.3.2. 关联数组

    当使用array关键字定义关联数组时,建议把语句拆分成多行,对于这种情况,应该使用空格使每一行的键和值分别对齐:

    $sampleArray = array('firstKey'  => 'firstValue',

                         'secondKey' => 'secondValue');

  • 相关阅读:
    iOS 设计模式-委托模式
    python中时间操作总结
    list、dict、tuple的一些小操作总结
    DataFrame的构建及一些操作
    python连接mysql、oracle小例子
    sqlalchemy 映射的小例子
    crontab定时任务以及其中中文乱码问题
    vs2008试用版的评估期已经结束解决办法
    MongoDB 常用shell命令汇总
    把py文件打成exe
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/2020442.html
Copyright © 2020-2023  润新知