关于编程实践的非常快速的问题:
我一直使用 echo() 将 HTML 代码在生成后立即输出给用户,并同时使用 ob_start() 以便能够在代码中稍后输出标头。最近,我意识到这是一种不好的编程习惯,我应该将 HTML 输出保存到最后。
是否有一个原因?它是什么,为什么输出缓冲不是一个好的选择?
谢谢!
关于编程实践的非常快速的问题:
我一直使用 echo() 将 HTML 代码在生成后立即输出给用户,并同时使用 ob_start() 以便能够在代码中稍后输出标头。最近,我意识到这是一种不好的编程习惯,我应该将 HTML 输出保存到最后。
是否有一个原因?它是什么,为什么输出缓冲不是一个好的选择?
谢谢!
一些想法,不一定有顺序。
用于echo
输出 HTML 很麻烦。PHP 是一种模板语言,如果需要输出 HTML,可以将其拆分出来:
<?php echo "<div id=\"foo\">" . $bar . "</div>"; ?>
对比
<div id="foo"><?php echo $bar; ?></div>
查看 MVC 模式。
每当将任何 HTML 发送到浏览器时,都会接收/创建标头。发生这种情况后,PHP 无法再发送任何标头。因此,通过“提前”发送代码,您将禁用 PHP 发送标头的能力,并限制代码的灵活性(现在或将来的更改)。
在视图中输出之前处理各种事情是很好的 - 例如,您可能需要发送额外的标题,例如Location
和Set-Cookie
。
此外,您永远不知道您需要什么样的视图 - 这次的响应是 HTML,但是如果您以后想要它是 JSON 或 XML 怎么办?你将很难重组。
如果您将所有输出留给最终视图,则可以将 HTML 替换为 XML 模板。