为什么有些脚本会省略关闭的PHP标记'?>'?

时间:2010-07-10 13:36:24

标签: php coding-style

在某些脚本中,我看到他们忽略了为脚本编写结束标记?>。为什么我也应该这样做?

(我确信他们没有忘记它。)

7 个答案:

答案 0 :(得分:173)

好吧,省略结束标记只是避免文件末尾的空格和其他字符的一种解决方案。例如,任何意外添加在结束标记后面的char都会在以后尝试修改标题信息时触发错误。

删除结束标记是一种“良好做法”,指的是许多编码指南。

答案 1 :(得分:82)

来自PHP: Instruction Separation

  

文件末尾的PHP块的结束标记是可选的,在某些情况下,在使用include()require()时省略它是有帮助的,因此最后不会出现不需要的空格对于文件,您仍然可以在以后向响应中添加标头。如果使用输出缓冲,它也很方便,并且不希望在包含的文件生成的部分的末尾看到添加的不需要的空格。

答案 2 :(得分:33)

php.net on PHP tags

  

如果文件是纯PHP代码,则最好省略PHP结束   标签在文件的末尾。这可以防止意外的空格或新的空格   在PHP结束标记之后添加的行,这可能会导致不需要的行   因为PHP会在没有时启动输出缓冲   来自程序员的意图在该点发送任何输出   脚本。

答案 3 :(得分:14)

他们这样做是为了避免在结束标记之后冒出空格的风险,这可能会阻止标题生效。

当然,这对于纯PHP文件也是如此。

答案 4 :(得分:7)

CodeIgniter Framework建议省略

的结束标记
  

“......会导致不需要的输出,PHP错误或空白页面”。

您可以阅读here

答案 5 :(得分:5)

PHP的现代版本在output_buffering中设置了php.ini标记。如果启用了输出缓冲,则可以在输出HTML后设置HTTP标头和cookie,因为返回的代码不会立即发送到浏览器。

这些示例在此上下文中仍然有效吗?

答案 6 :(得分:0)

  1. 显示不需要的空格/空白页。 HTTP标头不适用于那些不需要的空格。
  2. 大多数 JavaScript注入在文件末尾。它将显示错误消息并破坏代码,注入的JavaScript代码不会被执行。