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