如何判断是否从输出缓冲回调中调用了该函数?

时间:2011-12-04 14:57:01

标签: php output-buffering

在一个函数中,我怎样才能知道它是否是从输出缓冲回调中调用的(不一定是直接的)?

function foo() {
    if (magic here ????)
        $log->write("foo:Callback") 
    else
        $log->write("foo:Normal")
}

function calls_foo() {
    ...stuff
    foo();
}

calls_foo() // should log foo:Normal

ob_start('calls_foo')

    ...stuff

// should log foo:Callback at the end of the script

2 个答案:

答案 0 :(得分:2)

函数ob_get_status()返回一个数组,其中包含有关输出缓冲当前状态的信息。

答案 1 :(得分:2)

检查$debug = debug_backtrace()。如果调试数组长1,则从main调用,这意味着这是在请求结束时调用的ob回调。然后,您可以迭代数组并查看每个数组的'function'键以获得ob刷新功能。