zoukankan      html  css  js  c++  java
  • ZendFramework,php编码规范

    记得以前写过一个php编码规范的文章,这里的格式是zf的规范,大部分可以应用于非zf项目的PHP。

    说实话在程序正确的情况下,我有部分没有遵守。



    PHP文件格式



    1.?>

    ?>这个如果是结尾,在PHP中不是必须写的。不写的目的是为了防止出现?>之后出现空格造成文件有输出。有输出也许就会出现session already send之类的错误。尽量让?>后面没有输出,有了zf,代码和页面混合编码已经是上上上个世纪的事情了,所以你的程序要是有了?>后面出现 别的,那看来还要继续啃手册了,啃啃view和controller做为预习。



    2.缩进

    4个空格,这个已经成为软件业标准了。



    3.行最大长度

    建议是每行最多是80个字符,最多不超过120个。出屏幕了还需要拉横向滚动条,所以尽量多加换行。习惯问题,有人就是宽屏,160个字都够。



    4.换行符

    zf手册建议是使用unix like的换行,不要使用mac和windows的换行

    就是用\n ,不用\r或者\r\n

    这个没发现有什么必要,能省一个符号?还是php主要跑在unix like上?恩



    命名方式



    1.类

    zf的类名字这样的:

    这个我解释不太清楚,如果能看手册的尽量看手册。

    我只举几个例子做下简单的解释:

    zf的类都写在Zend/目录下

    Zend/Db/Table.php 这个文件里面的类就是 Zend_Db_Table

    同样:Zend/Feed/Rss.php 这个文件里面的类就是Zend_Feed_Rss

    注意类名和文件路径和文件名都是匹配的,还要注意是每个单词首字母要大写。

    注意:自己写的类不要使用Zend_开头。



    2.接口

    这个和类基本相同

    只是多了一点,就是必须以_Interface结尾,所以看到文件名为Interface的就是接口了。

    例如:Zend_Controller_Dispatcher_Interface



    3.文件名

    除了以上类型外,其他的文件名可以使用以字母和下划线开头的字母数字下划线横线("-"),禁止使用空格。

    所有的php代码文件必须是.php结尾。

    例如:Zend/Controller/Front.php

    例如:Zend/View/Helper/FormRadio.php



    4.函数和方法

    函数(function)只能用以字母开头的字母数字。

    zf建议所有的function都放到class中。

    函数名必须是小写字母开头,如果是多个单词组成,其余单词必须是大写字母。(camelCaps)

    例如:getDate(),getElementById()

    在面向对象中,成员变量的访问需要使用set/get,这个设计模式有提到。

    例如:private $_myz; public function setMyz(){}; public function getMyz(){};



    5.变量

    变量只能用以字母开头的字母数字。

    private和protected类型的变量必须以下划线开头,而且是单下划线。

    public类型的变量不能以下划线开头。

    变量名必须是小写字母开头,如果是多个单词组成,其余单词必须是大写字母。(camelCaps)



    6.常量

    常量要以大写字母开头,并且全部由大写字母和下划线组成。不带$符号。

    例如:PHP_SELF

    常量应该在类中定义:const MYZ_SELF



    编码风格



    1.<?php ?>

    zf里面不建议使用短标签:<??>。我也不建议...

    另外一点就是:结尾不写?>,理由上面解释过。



    2.String

    字符串如果是纯字符(不带变量),那么就用单引号。

    $myz = 'MyZ is cowboy!';

    在字符串中需要使用引号的,那么就用双引号,里面使用单引号,在SQL语句中用的很多。

    $myz = "SELECT * FROM myFavorites WHERE name = 'frame' LIMIT 0,1";

    字符串中含有变量,使用双引号。

    $myz = "$name is cowboy!"; $myz = "{$name} is cowboy!";

    这个是错的:$myz = "${name} is cowboy!";(虽然这个在PHP中是正确的)。

    字符串相连

    $zf = 'zend ' . 'framework';

    如果需要换行就以下面的格式写:

    $zf = 'zend' 

    . 'framework'

    . 'is'

    . 'good';



    3.数组

    数字索引,索引从0开始。

    $myz = array(1,2,3,'myz','great',$a);

    字符串索引,索引名称自行定义。

    $myz = array ('zend' => '1.0.1',

    'php' => '5.1.2',

    'apache' => '2.2.4');



    4.类

    4.1.类的声明

    类后面的{}每半个大扩号,需要单独占一行。

    每个类需要有符合PHPDocumentor标准的注释。

    类内所有的代码都要先缩进4个字符。

    一个PHP文件内只能有一个类。

    尽量一个PHP文件不要写其他的代码,如果有的话,请空两行。

    例如:

    require_once 'Zend/Pdf/Resource/Image/Jpeg.php';





    /**

    * Documentation Block Here

    */

    class SampleClass

    {

    // entire content of class

    // must be indented four spaces

    }



    4.2.类的成员变量

    成员变量要先于函数,在类中定义。

    不要使用var 这种方式定义变量,要使用private,protected,public,尽量不要把成员变量定义成public,而是使用set/get方式访问。



    5.函数和方法

    5.1.函数和方法的声明

    类中的函数必须使用private,protected,public。

    和类的格式相同,也需要大扩号单独占一行。

    函数后面的()紧贴函数名。

    /**

    * Documentation Block Here

    */

    class Foo

    {

    /**

        * Documentation Block Here

        */

    public function bar()

    {

           // entire content of function

           // must be indented four spaces

    }

    }



    函数后面的参数也可以使用引用变量public function bar(&$bar),这个必须先定义成&才能用。

    return($this->bar);//这个是错误的。要写成:return $this->bar; 提高可读性。



    5.2.函数和方法的使用

    函数参数中如果有多个,就要用逗号隔开,并且逗号后面要有空格。

    bar($a, $b, $c);



    6.控制语句

    6.1.If/Else/Elseif

    If,Else,Elseif 每个都要占一行。

    条件中,操作符前后要有空格,提高可读性。

    开始的大括号和if同行,结束的大括号另起一行。

    例如:

    if ($a != 2) {

    $a = 2;

    } elseif ($a == 3) {

    $a = 4;

    } else {

    $a = 7;

    }

    尽量多的使用elseif而不是再写一个if。

    在某些时刻也可以不使用{}。例如只有一行。



    6.2.Switch

    和if相似,开始的大括号和switch同行,结束的大括号另起一行。

    每一个case都要有4个空格缩进。

    switch ($numPeople) {

    case 1:

           break;



    case 2:

           break;



    default:

           break;

    }



    每个case需要有个break,如果想要出于某种特殊目的不写break的,需要注明:// break intentionally omitted



    7.注释

    7.1.所有的注释都要符合phpdocumentor规范。http://phpdoc.org/

    具体的规范,请参考zf文件中的内容。



    7.2.文件注释

    每个文件在开始都要有注释,符合phpdocumentor标准的。

    /**

    * Short description for file

    *

    * Long description for file (if any)...

    *

    * LICENSE: Some license information

    *

    * @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

    */



    7.3.类注释

    /**

    * Short description for class

    *

    * Long description for class (if any)...

    *

    * @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

    */



    7.4函数注释

    函数注释需要注明:描述,全部的参数,返回值。

    如果抛出异常,则需要:@throws exceptionclass [description]

  • 相关阅读:
    MVC 中创建自己的异常处理
    ajax 跨域解决方法
    值传递,引用传递
    值类型,引用类型 结合 栈,堆的理解
    SQL中 ALL 和 ANY 区别的
    SQL中的逻辑运算符
    使用函数输出两个数的最大值
    九句话,送给正在奋斗的我们,每天读一遍
    C语言函数调用简简介
    优秀项目经理的七个习惯
  • 原文地址:https://www.cnblogs.com/buffer/p/2115681.html
Copyright © 2011-2022 走看看