为什么要将输出保存到最后?

时间:2011-01-05 03:18:22

标签: php output-buffering

关于编程实践的非常快速的问题:

我总是使用echo()一旦生成就将HTML代码输出给用户,并且同时使用ob_start()以便能够在代码中输出标题。最近,我意识到这是糟糕的编程习惯,我应该将HTML输出保存到最后。

这有什么理由吗?它是什么,为什么输出缓冲不是一个好的选择?

谢谢!

3 个答案:

答案 0 :(得分:2)

一些想法,不一定是有序的。

  • 使用echo输出HTML非常麻烦。 PHP是一种模板语言,如果需要输出HTML,可以省略它:

    <?php echo "<div id=\"foo\">" . $bar . "</div>"; ?>
    

    VS

    <div id="foo"><?php echo $bar; ?></div>
    
  • 首先生成HTML并稍后输出标题是混乱的逻辑。首先确定要发送的 ,然后发送相应的标题,然后生成内容。
  • 缓存HTML以便稍后发送标题本身并不是一个问题,但它是流量结构错误的指标。
  • 您的应用可能会受益于某些划分/分解逻辑步骤。

了解MVC模式。

答案 1 :(得分:1)

每当向浏览器发送任何HTML时,都会收到/创建标题。发生这种情况后,PHP无法再发送任何标头。因此,通过“早期”发送代码,您将禁用PHP发送标头的能力,并限制代码的灵活性(无论是现在还是将来的更改)。

答案 2 :(得分:1)

在视图中输出之前处理各种事情是很好的 - 例如,您可能需要发送其他标题,例如LocationSet-Cookie

此外,你永远不知道你需要什么样的视图 - 这次回复是HTML,但是如果你以后想要它作为JSON或XML呢?你将很难重组。

如果您已将所有输出保留为最终视图,则可以将HTML替换为XML模板。