我有一个基于我正在使用的现有框架的复杂场景,这迫使我处理嵌套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]并看到它是一个包含对MyClassand的引用的数组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. 它们是框架的一部分。任何想法是什么阻止它工作?