我可以在没有 ob_start() 的情况下使用 ob_clean() 吗?

Can I use ob_clean() without ob_start() before?

我不习惯ob_*函数,所以我开始阅读文档。
我想在 方法 中使用 ob_clean() 但文档说:

The output buffer must be started by ob_start() with PHP_OUTPUT_HANDLER_CLEANABLE flag. Otherwise ob_clean() will not work.

但是我尝试了 (只是为了看看它是如何“行不通”的):

echo 'a';
ob_clean();
echo 'b';

输出b。这里的一切似乎都工作正常,但按照文档,它不应该,应该吗?

简短的回答是,是的,您必须先打开输出缓冲才能使用 ob_clean。但是,您可以通过 output_buffering ini 参数为所有文件启用输出缓冲(请参阅 manual). The way to check for this is through ob_get_level():

echo ob_get_level();

如果结果不为零,则启用输出缓冲。

如果您在未启用缓冲的情况下使用 ob_clean(),您应该会看到类似如下的错误:

Notice: ob_clean() [ref.outcontrol]: failed to delete buffer. No buffer to delete. in [file-path]