不封闭的php标记是怎们回事?

95 阅读1分钟

先截取一段手册上的原文:如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。 这些影响最多的时候应该是在使用 include 和 require的时候,加了结束标签 如果又在后面加了空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该省略这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。

作者:大南哥 链接:www.zhihu.com/question/20… 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


命名空间之spl_autoload_register中的代码为例子: 将Animal.php文件后加入关闭标签和其他字符:

<?php
namespace tt\aa;

class Animal{
    public function __construct(){
        echo implode(' | ', array(__FILE__,__FUNCTION__,__LINE__,"\n"));
    }
}
?>
sadfasd

执行 php main.php 输出结果:

sadfasd
/home/dev/git/test/t2/tt/aa/Animal.php | __construct | 6 |
/home/dev/git/test/t2/main.php |  | 41 |

就是在require该php文件时,就会把结尾标记后的乱七八糟的字符输出出来。所以,一般情况,纯php代码是没有 ?> 的。