马永占,myz,mayongzhan

相当稳定的进步,欢迎回贴交流

马永占ID:mayongzhan
[修改头像]
48090次访问,排名1959好友1人,关注者8
php,apache,mysql,linux,html,css,javascript
mayongzhan的文章
原创 146 篇
翻译 2 篇
转载 0 篇
评论 79 篇
myz的公告

XML聚合
feedsky
最近评论
nidaye:cao
w:瞎扯老外的蛋
181413517:高手啊,分析的很有道理,希望和你一同探讨,QQ:181413517
mayongzhan:恩,l和1是很难区分,为了用户体验...宁可少几个字母~
mayongzhan:广东,一开始想去...然后有些事情耽误了...不过广东也就是去深圳广州.
订阅我的博客
XML聚合  FeedSky
文章分类
收藏
    相册
    存档

    原创 ZendFramework,php编码规范

    新一篇: php加泛域名实现博客二级域名

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

    本文内容总结自zend framework(zf)手册中文版(不完全汉化)

    转载本文请注明
    @author 马永占(MyZ)
    @blog http://blog.csdn.net/mayongzhan/
    @year 2008
     
    记得以前写过一个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]
     
     
     
    规范全部完成,下一步该动手正题了。

    发表于 @ 2008年01月07日 11:04:00|评论(loading...)|编辑

    旧一篇: 1==$a

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © myz