PHP标记关闭——何时需要?

PHP标记关闭——何时需要?,php,Php,我们不应该在文件末尾放一个PHP结束标记,以避免各种各样的错误。但是在什么情况下需要关闭PHP标记呢?如果您想从PHP代码块切换到纯文本输出,则需要关闭标记 下面是一个例子: <?php // PHP code block ?> <!-- plain text output and not processed by PHP --> </body> 仅当您想在php块后输出非php代码时才需要它。当您不只是在脚本中使用php时:-)顺便说一句,如果您

我们不应该在文件末尾放一个PHP结束标记,以避免各种各样的错误。但是在什么情况下需要关闭PHP标记呢?

如果您想从PHP代码块切换到纯文本输出,则需要关闭标记

下面是一个例子:

<?php
    // PHP code block
?>
<!-- plain text output and not processed by PHP -->
</body>


仅当您想在php块后输出非php代码时才需要它。

当您不只是在脚本中使用php时:-)

顺便说一句,如果您想知道跳过结束标记可以防止什么错误。因为Zend的解释并不详细

PHP不需要它,省略它可以防止在响应中意外注入尾随空格

这意味着如果要使用header()将某人重定向到其他位置或以任何方式更改HTTP头。。。如果某些文件的结尾是这样的,那么您就不能这样做,并且会得到一个错误

}
?>
 //space here

因为这样,这个空间将作为内容输出到站点,然后您就不能修改标题了。

作为一般规则,我总是添加结束标记,因为这是我一天中唯一一次问号手指得到锻炼。那个可怜的问号在PHP中得不到爱;-)

但说真的,在不需要结束标记的情况下添加结束标记实际上会导致真正令人困惑的错误。因为这个,我整个下午都把头发拔了一次。问题通常是因为在结束标记后有一些空格你不容易看到,但它们被解释为响应体的一部分。如果您将此文件包含在另一个脚本中,而该脚本希望稍后发送自定义头,则这是一个坏消息。脚本开始发送响应正文后,无法发送标题信息,因此这些不可见的小空格会导致脚本失败。

这是我个人的“规则”:

  • 仅包含php代码的文件:永不结束标记
  • 包含php和其他内容(即HTML)的文件:始终结束标记

不要忘记三元运算符:$var=expr?真值:假值;我还是不明白。我知道结束标记不是必需的,但是如果您遇到无法发送标题的错误,那么您可以立即知道要查找什么bug。这几乎不神秘。我的OCD希望关闭PHP标记。:)