为什么有些脚本省略了closuresPHP标签'?>'?

在一些脚本中,我发现他们忽略了为脚本写一个结束标记?> 。 为什么呢,我应该这样做?

(我确定他们没有忘记。)

那么,省略结束标记只是避免文件末尾的空白和其他字符的一个解决scheme。 例如,任何意外添加在结束标记后面的字符将在稍后尝试修改标题信息时触发错误。

删除结束标签是许多编码准则的“良好实践”。

从PHP:指令分离

文件末尾的PHP块的结束标记是可选的,在某些情况下,使用include()require()时会省略它,因此在文件结尾处不会出现不需要的空格,能够稍后添加标题到响应。 如果使用输出缓冲也很方便,并且不希望在包含文件生成的部分末尾看到添加的不需要的空白。

php.net上的PHP标签 :

如果文件是纯PHP代码,则最好在文件末尾省略PHP结束标记。 这样可以防止在PHP结束标记之后添加意外的空白或新行,这可能会导致不必要的效果,因为当程序员无意在脚本中的任何位置发送输出时,PHP将开始输出缓冲。

他们这样做是为了避免在closures标签之后留下空白,从而可能会阻止标题正常工作。

当然,这仅适用于PHP文件。

CodeIgniter框架build议省略结束标签

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

你可以在这里阅读。

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

这方面的例子仍然有效吗?

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