2

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

我一直使用 echo() 将 HTML 代码在生成后立即输出给用户,并同时使用 ob_start() 以便能够在代码中稍后输出标头。最近,我意识到这是一种不好的编程习惯,我应该将 HTML 输出保存到最后。

是否有一个原因?它是什么,为什么输出缓冲不是一个好的选择?

谢谢!

4

3 回答 3

2

一些想法,不一定有顺序。

  • 用于echo输出 HTML 很麻烦。PHP 是一种模板语言,如果需要输出 HTML,可以将其拆分出来:

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

    对比

    <div id="foo"><?php echo $bar; ?></div>
    
  • 先生成 HTML 再输出标题是混乱的逻辑。先决定发送的内容,然后发送适当的标头,然后生成内容。
  • 缓冲 HTML 以稍后发送标头本身并不是真正的问题,但它是结构不良的流的一个指标。
  • 您的应用程序可能会受益于逻辑步骤的一些划分/分解。

查看 MVC 模式。

于 2011-01-05T03:29:17.703 回答
1

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

于 2011-01-05T03:22:48.563 回答
1

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

此外,您永远不知道您需要什么样的视图 - 这次的响应是 HTML,但是如果您以后想要它是 JSON 或 XML 怎么办?你将很难重组。

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

于 2011-01-05T03:24:01.703 回答