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

来源:互联网 发布:主题壁纸软件下载 编辑:程序博客网 时间:2024/05/16 08:51

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