使用している既存のフレームワークに基づく複雑なシナリオがあり、ネストされたcall_user_func_array
呼び出しを処理する必要があります。私は2つの機能を持つファイルを持っています:
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
呼び出され、 (as ) とメソッドtheir_caller
への参照を含む引数の配列が渡されます。MyClass
$this
my_callback
their_caller()
次に、リクエストを に転送してtheir_callback
渡し$options
ます。
でtheir_callback
デバッグして、と$options[0]
への参照を含む配列であることを確認できます。MyClass
my_callback
inを呼び出すとget_class_methods()
、メソッドのリストが表示されますが、何らかの理由でonが呼び出されません。私は電話をかけることさえでき、それは機能します。$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
。それらはフレームワークの一部です。それが機能するのを妨げているアイデアはありますか?