提前发送标头可能会产生深远的影响。以下是我眼中突然想到的其中一些:
尽管当前的PHP版本可能会缓冲输出,但是将要用于部署代码的实际 生产服务器 比任何开发或测试机器都重要得多。而且他们并不总是倾向于立即跟随最新的PHP趋势。
您可能会为莫名其妙的 功能丧失 感到头痛。假设您正在实现某种付款网关,并在付款处理器成功确认后将用户重定向到特定的URL。如果发生某种PHP错误,甚至是警告或行末多余,付款可能仍未处理,并且用户似乎仍未开票。这也是不必要的重定向是邪恶的原因之一,如果要使用重定向,则必须谨慎使用。
即使在最新版本中,您也可能在Internet Explorer中收到“页面加载已取消”类型的错误。这是因为 AJAX 响应/ json包含不应该包含的内容,因为某些PHP文件中的行尾多余,就像我几天前遇到的那样。
如果您的应用程序中有一些 文件下载 ,它们也可能因此中断。而且即使多年后,您也可能不会注意到它,因为下载的特定习惯取决于服务器,浏览器,文件的类型和内容(以及其他一些我不想让您感到厌烦的因素) 。
最后,许多PHP框架,包括Symfony,[Zend和Laravel(在编码指南中没有提及,但遵循了诉讼)和PSR-2标准项目2.2)要求省略结束标记。PHP手册本身1,2,WordPress的,Drupal的和许多其他PHP软件我想,提醒这样做。如果您只是习惯遵循标准(并为您的代码设置PHP-CS-Fixer),则可以忽略此问题。否则,您将始终需要牢记该问题。
奖励:与这两个字符相关的一些陷阱(实际上是一个陷阱):
- 即使是某些知名的库,在之后也可能包含多余的行尾
?>
。例如Smarty,即使2. 和3. 分支的最新版本也有此功能。因此,一如既往,请 注意第三方代码 。额外的好处:用于删除不必要的PHP结尾的正则表达式:(s*?>s*)$
在包含PHP代码的所有文件中替换为空文本。



