我看看PHP - Laravel框架源代码,在他们的error.php文件中,我找到了这一行.
**ob_get_level() and ob_end_clean();**
Run Code Online (Sandbox Code Playgroud)
只是想知道上面代码的目的是什么?
问候,
anru
PHP有一个称为输出缓冲的功能.这意味着echo和print的输出或其他不直接输出到php的输出,它将被缓冲.如果您需要在之后分析输出或将事件丢弃,这将非常有用.
通常你会以这样的方式使用:
ob_start();
echo "bla bla ...";
// ... more code
// grab contents of the output buffer
$content = ob_get_contens();
// analyze it ...
if(content_looks_good($content)) {
ob_end_flush();
} else {
echo "bad content";
ob_end_clean(); // throw buffer contents away
}
Run Code Online (Sandbox Code Playgroud)
然而,这只是一个例子.输出缓冲有更多用法示例.
您显示的代码只会抛出缓冲区内容.我不知道原因,因为我不知道你引用了哪些代码.
语法说明:
ob_get_level()将返回输出缓冲区的当前嵌套级别.如果它大于零,php将使用该值作为布尔值true,因此执行ob_end_clean()清除缓冲区的操作.
它与以下声明相同,可能更好理解:
if(ob_get_level() > 0) {
ob_end_clean();
}
Run Code Online (Sandbox Code Playgroud)