Zend Framework 规范Word文件下载.docx
- 文档编号:20341679
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:68
- 大小:59.30KB
Zend Framework 规范Word文件下载.docx
《Zend Framework 规范Word文件下载.docx》由会员分享,可在线阅读,更多相关《Zend Framework 规范Word文件下载.docx(68页珍藏版)》请在冰豆网上搜索。
$fp=fopen(__FILE__,'
r'
);
fseek($fp,__COMPILER_HALT_OFFSET__);
var_dump(stream_get_contents($fp));
}
//在程序结束时
__halt_compiler();
则在执行index.php时我们依然会看到警告,而只要把__halt_compiler()注释掉就不会报错了。
需要注意的是__halt_compiler()实际上时语言结构,而非函数或方法。
3.缩进由四个空格组成,禁止使用制表符TAB。
这个主要是为了代码美观整齐。
因为在不同的编辑器里,TAB制表符的长度是不一样的,而空格则是一样的。
实际上这已经成为编写代码的默认标准之一。
例如:
if($x==1){
$indented_code=1;
if($new_line==1){
$more_indented_code=1;
}
4.变量赋值必须保持相等间距和排列。
$variable1="
demo"
$var2
="
demo2"
5.每行代码长度应控制在80个字符以内,最长不超过120个字符。
因为linux读入文件一般以80列为单位,就是说如果一行代码超过80个字符,那么系统将为此付出额外操作指令。
这个虽然看起来是小问题,但是对于追求完美的程序员来说也是值得注意并遵守的规范。
例如,下面是在Zend/Navigation.php中的一段代码:
6.每行结尾不允许有多余的空格。
这在很多IDE或者编辑器里都是可以设置的,例如在save保存操作执行时,顺便去掉多余的空格。
7.行结束标志遵循Unix文本文件的约定,行必需以单个换行符"
\n"
(LF)结束。
换行符在文件中表示为10,或16进制的0x0A。
不要使用苹果操作系统的回车"
\r"
(0x0D)或Windows系统的回车换行组合如"
\r\n"
(0x0D,0x0A)。
这个规定没有贬低苹果机或者Windows的意思,而事实确实是,LAMP还是主流,所以遵循其文件约定也是为了在liunx系统上表现更好的性能。
二、
ZendFramework中的Php编码标准
(二)-命名约定
1.类命名总是对应于其所属文件的目录结构。
这源于PEAR命名约定,能让人从类名就能联想到该类的存放位置。
Zend_Acl_Role就代表Zend/Acl/Role.php文件。
require_once'
Zend/Acl/Role/Interface.php'
classZend_Acl_RoleimplementsZend_Acl_Role_Interface
{
......
这是规定实际上提供了一种伪命名空间机制,这在php5.3和php6里面都将得到支持,到时候ZendFramework可能会有一翻变革。
2.类名只允许有字母和数字字符,在大部分情况下不鼓励使用数字。
下划线只允许做路径分隔符。
这也源自PEAR命名约定,只不过ZendFramework在其基础上制定了更严格的规定。
Zend_Db_Table是允许的。
Zend_Db_Table2则是不鼓励的。
Zend-Db-Table是不允许的。
3.当你为其他开发人员提供API接口的时候,如果他们需要用一个复合的名称来确认这个接口,那么你必须把这个名称用下滑线(underline)隔开,而不是使用驼峰的形式。
而且最好是以常量(contant)的形式。
这个规定可能有点难懂,让我们举个例子吧。
例如在实例化Zend_Db_Adapter_xxx实例时,我们通常需要将adapter的名称作为参数传入到Zend_Db:
:
factory()并由该工厂返回所需实例。
我们可以实例化MySQLPDO驱动:
$db=Zend_Db:
factory('
PDO_MYSQL'
$config);
也可以实例化MsSQLPDO驱动:
PDO_MSSQL'
4.如果类名包含多个单词,每个单词的第一个字母必须大写,连续的大写是不允许的。
Zend_PDF是不允许的。
Zend_Pdf才是标准写法。
5.有Zend及其合作伙伴开发的ZendFramework类的命名必须总是以"
Zend_"
作为开头,并放在"
Zend/"
目录下。
Zend_Db是由Zend开发的,它通常以“Zend/Db.php”的形式存放。
My_Db则是用户自己定义或继承自Zend_Db的类,所以它不得以"
作为开头,而且通常以"
My/Db.php"
的形式存放。
6.接口类(interface)的定义必须遵循类名的定义规范,不同的是必须要以_Interface作为结尾。
Zend_Controller_Dispatcher_Interface对应的是Zend/Controller/Dispatcher/Interface.php
7.对于文件名,只有字母、数字字符、下划线和短横线("
-"
)可用,空格是绝对不允许的。
Zend/Controller/Front.php是标准写法。
My/Controller/Common-Action_2.php也是允许的。
My/Controller/CommonAction.php则是禁止的。
8.包含任何PHP代码的任何文件应当以"
.php"
扩展名结尾,视图脚本默认拓展名是"
.phtml"
,也可以用"
.html"
等代替。
Zend/Controller/Front.php是标准php文件写法,index.phtml是默认视图脚本名。
我相信很多人都见过以下的一些php的拓展名:
.php4
.php5
.phpx
.class.php
.include.php
html(开玩笑?
)
而在ZendFramework中你只会见到一种,那就是"
。
9.函数名只允许由数字或字母组成,下划线是不允许的,首字母要小写,其后每个单词首字母要大写,即所谓的“camelCaps”规则。
filterInput()
getElementById()
widgetFactory()
等都是规范的写法。
而:
FilterInput3()
getelementbyid()
widget_factory()
等都是不允许的。
10.函数名越详细越好,应该能够描述清楚该函数的功能。
getOne($id)//描述的不清不楚。
getOneRecordById($id)//则非常详细而清晰。
11.对于对象成员的访问,我们必须始终使用“get”和“set”方法。
classFoo
protected$_testObj;
publicfunctiongetTestObj()
{
return$this->
_testObj;
publicfunctionsetTestObj($testObj)
$this->
_testObj=$testObj;
12.当我们使用了某些设计模式的时候,我们的方法中应该含有该模式名。
abstractclassZend_Cache
//......
publicstaticfunctionfactory($frontend,$backend,
$frontendOptions=array(),$backendOptions=array(),
$customFrontendNaming=false,$customBackendNaming=false,
$autoload=false)
//......
13.当类成员函数被声明为private或者protected时,函数必须以下划线"
_"
为开头,一般情况下的函数不含下划线。
classZend_Foo
protectedfunction_fooBar()
//...
14.如果我们需要把一些经常使用的函数或方法定义为全局函数,那么应该把它们以静态(static)的形式定义在类中。
classZend_Debug
publicstaticfunctiondump($var,$label=null,$echo=true)
15.在类中被声明为static的函数或变量不应该再被声明为private私有,而应该为protected或者public,如果只是不想被子类继承,则应该用final声明它们。
finalpublicstaticfunctionfooFinally()
classBarextendsFoo
//Thisiswrong
Bar:
fooFinally();
//UseFoo:
fooFinally()instead
Foo:
16.函数或方法的初始中括号应该在函数声明的下一行顶格。
functionMyfunction($parameter1)
17.当函数参数不一定需要被赋值的时候,用"
null"
来代替"
false"
作为函数参数的默认值,除非该参数是boolean值。
例如,考虑如下代码:
publicfunctionfoo($required,$optional=null)
if(isset($optional)){
echo'
Echosomethingonlywhen$optionalissetand!
=null'
publicfunctionfoo($required,$optional=false)
Alwaysechosomething'
18.变量只允许由字母组成,数字或下划线都是不允许的。
$foo//是正确的
$foo_foo//是错误的
$foo2//也是错误的
19.被声明为private或者protected的类成员属性必须由下划线"
作为开头,这也是唯一一种允许变量中出现下划线的情况,而声明为public的成员属性则在任何时候都不允许含有下划线。
private$_barPrivate;
protected$_barProtected;
public$barPublic;
20.变量名必须像函数名那样,即首字母要小写,其后每个单词首字母要大写,即所谓的“camelCaps”规则。
$compatibilityMode
$registryClassName
21.建议用描述性的变量的命名,变量名越详细越好,以至于像$i或$n等等都是不鼓励使用的,特别是在超过20行的循环里面。
例如Zend_Search_Lucene中的一段代码:
//readsegmentInfos
for($count=0;
$count<
$segments;
$count++){
$segName=$segmentsFile->
readString();
22.常量constant必须仅包括字母,数字和下划线,而且必须全部大写,各个单词之间用下划线分割。
MY_CONSTANT_ONE"
//是允许的
MYCONSTANTTWO"
//是不允许的
my_constant_two"
//也是不允许的
23.常量应该在类中由const声明并定义,全局范围内的define是不鼓励使用的。
classZend_Acl
constTYPE_ALLOW='
TYPE_ALLOW'
constTYPE_DENY
='
TYPE_DENY'
24.和php文档说明不一样的是,ZendFramework中的boolean值和null值都是用小写的。
例如Zend_Mail中的一段代码:
publicfunctionsetMessageId($id=true)
if($id===null||$id===false){
return$this;
}elseif($id===true){
$id=$this->
createMessageId();
三、
ZendFramework中的Php编码标准(三)-编码风格
1.PHP代码必须以完整的形式来定界,短定界符只能用在视图。
//Phpcodehere
//index.phtml
hello'
?
2.当一个字符串是纯文字组成的时候(即不含有变量),则必须总是以单引号('
)或者撇号(`)作为定界符。
$a='
ExampleString'
$b=`ExcuteSomething`;
3.当一个字符串含有撇号(`)的时候,我们允许使用双引号("
)来定界字符串,特别是在些SQL语句的时候。
$sql="
SELECT`id`,`name`from`people`WHERE`name`='
Fred'
OR`name`='
Susan'
4.变量替换中的变量只允许用$+变量名的形式。
$greeting="
Hello$name,welcomeback!
//允许
Hello{$name},welcomeback!
//允许
Hello${name},welcomeback!
//不允许
5.多个字符串必须用点号"
."
来连接,且字符串与点号间必须用一个空格隔开。
$company='
Zend'
.'
Technologies'
6.当用点号"
连接各字符串的时候,我们允许把它分割成多行以增强可读性。
在这种情况下,点号"
必须与等于号"
="
对齐。
SELECT`id`,`name`FROM`people`"
."
WHERE`name`='
"
ORDERBY`name`ASC"
7.任何负数都不允许作为数组的索引,数组索引必须以任何非负数作为开头,而且强烈建议以0作为默认开头。
$sampleArray=array(-1=>
-1,0=>
0);
//错误
$sampleArray=array(0=>
-1,1=>
//正确
$sampleArray=array(1=>
-1,2=>
8.当用array类型符号来构造数组的时候,必须在每个逗号之后加上一个空格来增强可读性。
$sampleArray=array(1,2,3,'
'
Studio'
9.多行的索引数组同样允许用array类型符号来构造,只是我们需要为每行的每个值加上必要的空格来保持其整齐美观。
$sampleArray=array(1,
2,
3,
'
$a,$b,$c,
56.44,
$d,500);
10.当使用array类型符声明关联数组的时候,我们鼓励把它分成多个行,只是我们必须同时保证每行的键与值的对齐,以保持美观。
$sampleArray=array('
firstKey'
=>
'
firstValue'
secondKey'
=>
secondValue'
11.中括号的开始必须在类名的下一行顶格。
classfoo
//正确{}写法
classfoo{
//错误{}写法
12.类定义必须拥有符合phpDocumentor标准的注释块。
/**
*类定义注释
*/
classZend_Class
13.类中的所有代码都必须用4个空格来进行缩进。
$spaces='
4spaces'
if($spaces=='
){
ispermitted!
$spaces='
lessthen4spaces'
if($spaces!
echo'
isnotpermitted!
14.每个php文件只允许声明一个类。
在类文件里面写其它代码是允许的,但并不鼓励这样做。
假如真要附加代码的话,必须用空行来分隔。
//允许但并不鼓励这样做
static$foo='
echoZend_Class:
$foo;
*在同一文件里声明超过两个类是不允许的
classClass_One
classClass_Two
15.任何类变量的声明都必须放在类顶部,先于任何函数的声明。
classright
public$foo='
先于函数定义'
publicfunctionfun()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Zend Framework 规范
![提示](https://static.bdocx.com/images/bang_tan.gif)