Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

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

Posted on 2010-02-05 19:57  analyzer  阅读(379)  评论(0编辑  收藏  举报

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

 

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

我要啦免费统计