为什么有些脚本省略PHP结束标记'?>'?

在一些脚本中,我看到它们省略了脚本的结束标记?>。为什么要这样做,我应该这样做吗?

(我相信他们不会忘记。)

51630 次浏览

他们这样做是为了避免在结束标记后有空格,这可能会阻止标题的工作。

当然,这只适用于php文件。

省略结束标记只是避免在文件末尾出现空格和其他字符的一种解决方案。例如,任何不小心添加在结束标记后面的字符都会在稍后试图修改标题信息时触发错误。

根据许多编码指南,删除结束标记是一种“良好实践”。

PHP:指令分离

PHP块在文件末尾的结束标记是可选的,在某些情况下,当使用include()require()时,省略它是有帮助的,这样文件末尾就不会出现不必要的空白,并且以后仍然可以向响应中添加头信息。如果您使用输出缓冲,并且不希望在包含的文件生成的部分的末尾添加不必要的空白,那么它也很方便。

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

这些例子在这种情况下仍然有效吗?

CodeIgniter框架建议省略的结束标签

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

你可以读它在这里

  1. 它显示不必要的空白页。HTTP报头对那些不需要的空白无效。
  2. < em > < / em >大部分 JavaScript注入在文件的末尾。它将显示一个错误消息并中断代码,注入的JavaScript代码不会被执行。

PHP标签上的PHP。net:

如果文件是纯PHP代码,最好省略PHP结束符 标记在文件末尾。这可以防止意外的空白或新的 在PHP结束标记之后添加行,这可能会导致不必要的 效果,因为PHP将开始输出缓冲时,没有 过程中发送任何输出的意图 脚本。< / p >