zoukankan      html  css  js  c++  java
  • Zend Framework的PHP编码规范【2】

    4.4. 类

    4.4.1. 类的声明

    类的声明应该遵守以下要求:

    l        大括号必须写在类名字的下一行;

    l        每个类都必须有一个遵守PHPDocumentor标准的注释文档块;

    l        类内部的代码都必须缩进4个空格;

    l        一个PHP文件只允许有一个类;

    l        在一个类文件里可以放置其他代码,但不提倡,对于这种情况,必须使用2个空行,把类代码和其他PHP代码分开。

    下面是一个规范的类的声明:

    /**

    * 文档注释块

    */

    class SampleClass

    {

        // 类的内部代码

        // 必须缩进4个空格

    }

    4.4.2. 类成员变量

    成员变量的命名必须遵守变量命名规则。

    类成员变量的声明必须位于类的顶部,在函数 定义之前。

    不允许使用var关键字,成员变量的声明必须使用关键字:privateprotected或者public。尽管可以通过把变量声明为public,以便直接访问成员变量,但本规范推荐使用get/set存取符来访问变量。

    4.5. 函数与方法

    4.5.1. 函数与方法的定义

    函数命名必须遵循命名规范。

    类内部的函数必须使用privateprotectedpublic等关键字,表示该函数的可见性。

    函数里大括号的用法与类一致,即大括号必须位于函数名字的下一行,函数名字与括号之间没有空格。

    强烈建议不要使用全局范围函数。

    下面是规范的类成员函数的书写方法:

    /*

    * 文档注释块

    */

    function sampleMethod($a)

    {

        // 函数的内部内容

        // 必须缩进4个空格

    }

    注意: 只有在函数定义阶段允许传递“引用传递变量”:

    function sampleMethod(&$a)

    {}

    调用阶段不允许使用引用传递变量。

    返回值(return)不允许使用括号。

    function foo()

    {

        // 错误的写法

        return($this->bar);

        // 正确的写法

        return $this->bar;

    }

    4.5.2. 函数和方法的用法

    如果函数有多个参数,需要在每个逗号后面添加一个空格,参看下面的例子:

    threeArguments(1, 2, 3);

    调用阶段不允许传递引用传递参数,而应该把他放在函数定义阶段。

    对于允许使用数组参数的函数,函数调用允许使用array声明语句,并且允许分割成多行,同时需要通过缩进保持可读性,例如下面的例子:

    threeArguments(array(1, 2, 3), 2, 3);

    threeArguments(array(1, 2, 3, 'Zend', 'Studio',

                         $a, $b, $c,

                         56.44, $d, 500), 2, 3);

    4.6. 控制语句

    4.6.1. if / else / elseif

    控制语句中ifelseif关键字之后,必须一个空格与后面的左括号分割,右括号后面也必须有一个空格。

    在括号里面的条件语句,操作符两边必须有空格以保持可读性,如果括号里的条件较多,建议根据逻辑分组通过添加括号。

    左大括号应该写在条件语句的同一行,而右大括号应该独自放在一行,括号内部的内容应该缩进4个字符。

    if ($a != 2) {

        $a = 2;

    }

    对于包含有elseifelseif语句,其格式要求参照如下例子:

    if ($a != 2) {

        $a = 2;

    } else {

       $a = 7;

    }

    if ($a != 2) {

        $a = 2;

    } elseif ($a == 3) {

       $a = 4;

    } else {

       $a = 7;

    }

    尽管PHP允许在某些情况下这些语句里可以不使用大括号,但我们的编码规范里不允许这么做,所有的ifelseifelse语句都必须使用大括号。

    尽管允许使用elseif结构,但我们更推荐使用"else if"组合。

    4.6.2. Switch

    对于控制语句switch,用于包含条件语句部分的左右括号,其左括号前和右括号后都必须有一个空格。

    switch内部的内容,都必须缩进4个空格,每个case语句下的内容也同样缩进4个空格。

    switch ($numPeople) {

        case 1:

            break;

        case 2:

            break;

        default:

            break;

    }

    switch语句中都必须有一个default语句,不能省略。

    注意: 在某些时候,为了让一个case语句在完成操作之后直接跳到下一个case语句,而有意去掉breakreturn语句。为了把这种情况与bug区别,建议在需要省略掉breakreturn的地方添加注释:"// 这里有意去掉break语句(break intentionally omitted"

    4.7. 内部文档化

    4.7.1. 文档格式

    所有的文档块(即docblocks)都必须遵循phpDocumentor格式,这里不对phpDocumentor格式多做介绍,具体请参考网站http://phpdoc.org

    所有为Zend Framework写的或者使用Zend Framework的源代码文件,都必须在每个文件顶部包含文件级的文档块,以及在每个类定义的上边包含类级的文档块,下面就是文档块的例子。

    4.7.2. 文件级文档块

    任何包含PHP代码的文件都必须在其顶部包含文档块,并至少包含以下phpDocumentor标记:

    /**

    * 关于本文件的简要说明

    *

    * 关于本文件的详细描述(如果有的话)...

    *

    * LICENSE: 许可信息

    *

    * @copyright  2005 Zend Technologies

    * @license    http://www.zend.com/license/3_0.txt   PHP License 3.0

    * @version    CVS: $Id:$

    * @link       http://dev.zend.com/package/PackageName

    * @since      File available since Release 1.2.0

    */

    4.7.3. 类级别文档块

    每个类级别的文档块都必须至少包含以下phpDocumentor标记:

    /**

    * 类的简单说明

    *

    * 类的详细说明 (如果有的话)...

    *

    * @copyright  2005 Zend Technologies

    * @license    http://www.zend.com/license/3_0.txt   PHP License 3.0

    * @version    Release: @package_version@

    * @link       http://dev.zend.com/package/PackageName

    * @since      Class available since Release 1.2.0

    * @deprecated Class deprecated in Release 2.0.0

    */

    4.7.4. 函数级文档块

    每个函数,包括对象方法,都必须包含至少下列文档块:

    l        函数功能描述

    l        所有的参数

    l        所有可能返回的值

    这里不必使用@access标记,因为用来声明函数的publicprivate或者protected等关键字已经指明了访问级别。

    如果函数或方法可能抛出异常,需要使用“@throws:”标记,例如:

    @throws exceptionclass [描述]

  • 相关阅读:
    204. 计数质数
    236. 二叉树的最近公共祖先
    优先队列和哈夫曼树
    185. 部门工资前三高的所有员工(求组内前几的值)
    部门工资最高的员工(求组内最大值)
    回调函数的案例
    单链表
    动态数组
    一致性哈希算法的基本原理
    只用2GB内存在20亿个整数中找到出现次数最多的数
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/2022273.html
Copyright © 2011-2022 走看看