私は既存のフレームワークに基づいた複雑なシナリオを使用しています。これは、入れ子になったcall_user_func_array
コールを処理することを余儀なくされています。私は2つの機能を持つファイルを持っている:PHPクラス入れ子の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]);
}
は、その後、私は持つクラスといくつかのpublicメソッドを持つ別のファイルがあります:私はMyClass
の新しいインスタンスにmy_caller()
を呼び出すと
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;
}
}
を、それをtheir_caller
が呼び出され、MyClass
($this
)とmy_callback
という参照を含む引数の配列が渡されます。
their_caller()
は、their_callback
に要求を転送し、$options
を転送します。
their_callback
$options[0]
をデバッグして、MyClass
とmy_callback
への参照を含む配列であることがわかります。
私はtheir_callback
に$options[0][0]
にget_class_methods()
を呼び出し、それがメソッドの一覧が表示されますが、何らかの理由で、call_user_func_array($options[0], $options[1]);
はMyClass
にmy_callback
を呼び出すことはありません。私も$options[0][0]->my_callback('HELLO');
と呼ぶことができ、それは動作します。
残念ながら、their_caller
またはtheir_callback
は変更できません。それらはフレームワークの一部です。それが働くのを妨げる何かのアイデア?
、 '$オプション[0] [0] - > $オプション[0] [1]($オプション[1]);' 'their_callback'内から動作。 – Ward