我可以在没有 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_start()
对 ob_*
函数来说是强制性的吗?
- 是否有默认值允许省略
ob_start()
的变量(例如 php.ini?
- 我应该怎么理解"ob_clean()不会起作用"?我应该期待什么?
简短的回答是,是的,您必须先打开输出缓冲才能使用 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]
我不习惯ob_*
函数,所以我开始阅读文档。
我想在 方法 中使用 ob_clean()
但文档说:
The output buffer must be started by
ob_start()
withPHP_OUTPUT_HANDLER_CLEANABLE
flag. Otherwise ob_clean() will not work.
但是我尝试了 (只是为了看看它是如何“行不通”的):
echo 'a';
ob_clean();
echo 'b';
输出b
。这里的一切似乎都工作正常,但按照文档,它不应该,应该吗?
ob_start()
对ob_*
函数来说是强制性的吗?- 是否有默认值允许省略
ob_start()
的变量(例如 php.ini? - 我应该怎么理解"ob_clean()不会起作用"?我应该期待什么?
简短的回答是,是的,您必须先打开输出缓冲才能使用 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]