PHP 菜鸟请教一下 ob_start()的用法

2020-01-03 20:54:50 +08:00
 ab
<?php
ob_start('callback');

echo 'test';

function callback($value){
@file_put_contents($_SERVER["DOCUMENT_ROOT"].'/cache.html', $value); //cache file
ob_end_flush();
//return $value;
}
?>


回调中,为什么用 ob_end_flush 不输出内容,而 return $value 却可以呢?
3479 次点击
所在节点    PHP
1 条回复
ab
2020-01-03 21:07:53 +08:00
自己回答,文档没看清楚。

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() and ob_start() 不能从一个回调函数中调用。 如果从回调函数中调用了它们,产生的行为是不明确的。 如果想要删除缓冲区的内容,从回调函数中返回一个"" (空字符串)。 更不能从一个回调函数中使用像 print_r($expression, true) 或 highlight_file($filename, true) 一样的输出缓冲函数。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/634891

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX