ZendFramework,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
*
* @copyright2005 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)...
*
* @copyright2005 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]
规范全部完成,下一步该动手正题了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值