ob_get_contents + ob_end_clean vs ob_get_clean

php
2022-08-30 13:58:01

这两个PHP之间有什么区别吗?

ob_start();
//code...
$pageContent = ob_get_contents();
ob_end_clean();
someFunction($pageContent);

ob_start();
//code...
$pageContent=ob_get_clean();
someFunction($pageContent);

我目前正在使用第一个块,但是如果它在功能上是等效的,我想使用第二个块,因为它更简洁一些。


答案 1

要回答您的问题:

ob_get_clean() 实质上同时执行 ob_get_contents() 和 ob_end_clean()。

是的。它在功能上是等效的。


案例1:

ob_get_contents() + ob_end_clean():

ob_get_contents — 返回输出缓冲区的内容

ob_end_clean — 清理(擦除)输出缓冲器并关闭输出缓冲

因此,基本上,您将输出缓冲区的内容存储到变量中,然后使用 .ob_end_clean()

案例2:

ob_get_clean — 获取当前缓冲区内容并删除当前输出缓冲区

您将缓冲区内容存储到变量中,然后删除输出缓冲区。


你正在做的事情本质上是一样的。所以,我不认为在这里使用第二个代码块有什么问题,因为它们都在做同样的事情。


答案 2

ob_get_contents()可用于继续输出缓冲。

例:

ob_start();
echo 'Something!';
$html1 = ob_get_contents();
echo 'More to say!';
$html2 = ob_get_contents();
ob_end_clean();

最后,vars 有这个内容:

$html1 = 'Something!';
$html2 = 'Something!More to say!';

推荐