省略关闭Php标签

时间:2011-06-01 04:59:26

标签: php

  

可能重复:
  Why do some scripts omit the closing php tag '?>'?

我一直在阅读一些关于省略关闭PHP标签的文章,因为他们说如果你的.php文件不包含任何其他东西,那么它在PHP中是一个很好的编程习惯。有很多这样的问题,但是在我尝试了他们迄今为止在我的机器上工作得很好的事情之后。也许这是一个固定的问题或什么?

但是我不太明白为什么它可以成为一个好的编程实践,因为它带来了空间或者其他东西,但我已经尝试过这个并且效果很好。

Master.php

<?php

echo "Master.php";

include "Slave.php";

header("Location:Slave.php");

?>

Slave.php

<?php

echo "Slave.php";

?> 

如果我没有使用关闭php标记,我真的不明白应该是什么问题。

感谢。

4 个答案:

答案 0 :(得分:10)

主要问题是你可以在结束?>之后包含额外的空格(但可以是任何字符)(除了PHP允许的\n之外,感谢Mario)。

这个额外的空格在PHP中显示为要发送的输出。这使得PHP开始发送响应主体,因此无法设置/修改任何其他标头。

这很难调试(因为空格在文本编辑器中通常是不可见的)并且通常导致可怕的标题已发送错误。

答案 1 :(得分:2)

结束标记的问题是在最后一个之后的任何空格?&gt;可能会导致错误,并且在修复bug时很难检测到。

答案 2 :(得分:0)

通常最好以关闭PHP标记来结束您的脚本。

在你的情况下,在?>之后可能会留下一个空格(由于这个原因,如果出现问题,这是非常狡猾的,很难说错误在哪里),所以它将被视为输出而你不会例如,如果您正在开发网站,则可以启动会话或传递标题。

只是我的意见。我可能永远不会用结束标记结束我的脚本

答案 3 :(得分:0)

问题来自于除1之外的任何数量的换行符:如果在那一端没有换行符,一些php解析器会感到沮丧,但是如果你有多个换行符,那么它会被打印,因为php标签以外的任何东西都是考虑过HTML。

最常见的问题是库/模型文件会有额外的换行符,导致在实例化页面/视图之前很久就会发送标题。