【问题标题】:What is the advantage of not including a closing `?>` tag in a PHP class file? [duplicate]在 PHP 类文件中不包含结束 `?>` 标记有什么好处? [复制]
【发布时间】:2011-05-24 23:12:57
【问题描述】:

可能重复:
PHP closing tag

我见过很多没有结束 ?> 的 PHP 类文件,所以用这个代替:

<?php
class DataTypeLine extends DataType {
    ...
}
?>

他们只有这个:

<?php
class DataTypeLine extends DataType {
    ...
}

我还注意到,当我在 Eclipse Helios 中创建一个新的 PHP 文件时,它默认只有一个起始 &lt;?php 标记但没有结束标记 ?&gt;

没有结尾?&gt;标签有什么好处?

【问题讨论】:

    标签: php


    【解决方案1】:

    没有真正的优势——它有助于确保不会通过在文件末尾添加新行来确保不会输出无意的空格,这可能会弄乱诸如发送标头之类的事情。

    例如,像这样的文件:

    <?php
        /* do stuff */
    ?>
    
    <!-- note the empty space above, this comment not really part of the code -->
    

    会破坏像这样使用它的文件

    <?php
        require 'myfile.php';
        header('Location: http://example.com/');
    ?>
    

    由于第一个文件中的空行,输出已经发送错误。通过不使用?&gt;,您可以避免该潜在问题。

    【讨论】:

    • 能否解释一下为什么空格会导致错误?
    • 试试吧!示例总是会出错
    【解决方案2】:

    来自 PHP documentation

    PHP 块的结束标记位于 文件的结尾是可选的,在某些情况下 省略它的情况在以下情况下会有所帮助 使用 include() 或 require(),所以 不需要的空格不会出现在 文件的结尾,你仍然会 能够在响应中添加标头 之后。如果您使用它也很方便 输出缓冲,不喜欢 查看添加的不需要的空格 由生成的零件的末端 包含的文件。

    【讨论】:

      【解决方案3】:

      这是给新手的编码风格推荐。 PHP 在结束标记后吃掉了一个 \n。然而,许多新人无意中留下了额外的空格或制表符或多个换行符。在 Windows 上,\r\n 尾随 ?&gt; 结束标记会加剧这种情况,一旦脚本部署到 Unix 服务器就会导致问题。

      省略结束标签也被一些人认为是优化(如单引号)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-14
        • 2016-03-12
        • 1970-01-01
        • 2021-10-16
        • 2019-08-22
        • 1970-01-01
        • 2013-11-26
        相关资源
        最近更新 更多