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

Nau*_*der 192 php coding-style

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

(我敢肯定他们没有忘记它.)

dhh*_*dhh 177

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

删除结束标记是一种参考许多编码指南的"良好实践".

  • 有些人还认为这是一种语言缺陷. (116认同)
  • 所有解析器都必须在EOF(文件结束)处停止解析,因此结束标记是冗余的而不是语言缺陷. (38认同)
  • 尝试任何语言,你有结束标记,如果你没有在EOF,你有一个语法问题.在EOF接受未封闭的块或在关闭标签后打印垃圾绝对是两种语言缺陷. (15认同)
  • 在某些情况下是不是需要什么?人们负责清理结束标记后的空格.在某些情况下,某些人可能需要在结束标记之后输出. (6认同)
  • 它是[Zend](http://framework.zend.com/manual/en/coding-standard.php-file-formatting.html)和[Drupal](http://drupal.org/coding-standards# phptags)标准省略`?>`标签. (4认同)
  • @Joe"否则,肯定有专业人士 - 它多次救了我"说这是不理解反对意见.它为你节省了很多次,是的.但是由于语言缺陷,你只需要保存.所以说它拯救了你并不反对它是一种语言缺陷.这就像是在说,"隔壁的家伙阻止了自己开枪射击我.所以他没有拿枪对付我的脑袋." (2认同)

Met*_*ark 84

来自PHP:指令分离

在文件的最后一个PHP代码块的结束标记是可选的,在某些情况下,忽略它是有帮助的使用时include()require(),所以不需要的空格就不会在文件的结尾出现,而你仍然可以添加头后来的回应.如果使用输出缓冲,它也很方便,并且不希望在包含的文件生成的部分的末尾看到添加的不需要的空格.


bri*_*uth 33

php.net上的PHP标签:

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


Sou*_*sou 15

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

当然,这对于仅PHP文件也是如此.


bea*_*olf 7

CodeIgniter Framework建议省略关闭标记

"......会导致不必要的输出,PHP错误或空白页面".

你可以在这里阅读.


dan*_*car 5

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

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