我有一个基于我正在使用的现有框架的复杂场景,这迫使我处理嵌套call_user_func_array
调用。我有一个具有两个功能的文件:
function their_caller($options)
{
call_user_func_array('their_callback', $options);
}
function their_callback($options)
{
call_user_func_array($options[0], $options[1]);
}
然后我有另一个文件,其中包含一个类和一些公共方法:
namespace FOO;
class MyClass
{
public function my_caller()
{
$operations = array(
array(
array($this, 'my_callback'),
'Hello World'
)
);
their_caller($operations);
}
public function my_callback($text)
{
print $text;
}
}
当我调用my_caller()
的新实例时MyClass
,它会调用their_caller
该实例,然后传递一个参数数组,其中包含对MyClass
(as $this
) 的引用以及方法my_callback
。
their_caller()
然后将请求转发给their_callback
并传递$options
。
我their_callback
可以调试$options[0]
并看到它是一个包含对MyClass
and的引用的数组my_callback
。
我调用get_class_methods()
它$options[0][0]
,their_callback
它会显示方法列表,但由于某种原因,它call_user_func_array($options[0], $options[1]);
不会调用my_callback
. MyClass
我什至可以打电话$options[0][0]->my_callback('HELLO');
,它的工作原理。
不幸的是,我无法修改their_caller
或their_callback
. 它们是框架的一部分。任何想法是什么阻止它工作?