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

Php 如何判断函数是否从输出缓冲回调调用?,php,output-buffering,Php,Output Buffering,在函数中,如何确定它是否是从输出缓冲回调调用的(不一定是直接调用的) 函数返回一个数组,其中包含有关输出缓冲当前状态的信息。检查$debug=debug\u backtrace()。如果调试数组的长度为1,则会从main调用,这意味着这是在请求结束时调用的ob回调。然后,您可以迭代数组,并查看ob刷新函数的每个数组的'function'键。您需要通用解决方案吗?否则,您可以只在foo($calledBy=xxx)中添加一个参数,并在调用中设置这个参数。\u foo()无论您在做什么,我都觉得这是

在函数中,如何确定它是否是从输出缓冲回调调用的(不一定是直接调用的)


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

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

您需要通用解决方案吗?否则,您可以只在foo($calledBy=xxx)中添加一个参数,并在调用中设置这个参数。\u foo()无论您在做什么,我都觉得这是一个危险的无法维护的混乱局面。祝你调试这样的东西好运。@Nebel54:我无法控制调用函数的代码,我只能更改函数本身。谢谢!我希望有一个更优雅的解决方案,但这似乎是唯一的办法。
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