现在的位置: 首页 > 综合 > 正文

Zend Framework 中的 Php 编码标准 (一) – 文件格式

2013年09月13日 ⁄ 综合 ⁄ 共 1680字 ⁄ 字号 评论关闭

原文 : http://kbs.kimbs.cn/blog/list/post/22/title/zend-framework-coding-standards-for-php-file-formatting



Zend Framework 中的 Php 编码标准 (一) - 文件格式



1. 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。


实际上这个问题只有当你不开启压缩或缓存输出时才会出现 : 



// php.ini - 禁止压缩输出及缓存输出

zlib.output_compression = off

output_buffering = off


// foo.php - 注意这个时候有一些空格或换行符掉在了 "?>" 之后,当然这在页面上是看不到的

<?
php


$foo 


'foo'
;


?>

复制代码

// index.php - 在包含 foo.php 的同时,实际上我们已经输出了一些空格或换行了


<?php


include 
'foo.php'
;


session_start
();


?>



复制代码

这时我们将看到一个警告 (warning) 说 "... Cannot send session cache limiter - headers already sent ..." 这是因为我们在 session_start() 之前输出了一些看不到的字符。



2. 由 __halt_compiler() 允许的任意的二进制代码的内容,被 Zend Framework 中的 PHP 文件或由它们产生的文件所禁止。


实际上这个规定是为了防止一些极个别的情况发生,例如上例中 :


// foo.php - 我们已经禁用了 "?>"


<?php


// 假如我们想通过 __halt_compiler() 输出某些东西


if (
defined
(
'__COMPILER_HALT_OFFSET__'
)) {


    

$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 系统上表现更好的性能。

抱歉!评论已关闭.