0

使用している既存のフレームワークに基づく複雑なシナリオがあり、ネストされた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$thismy_callback

their_caller()次に、リクエストを に転送してtheir_callback渡し$optionsます。

their_callbackデバッグして、と$options[0]への参照を含む配列であることを確認できます。MyClassmy_callback

inを呼び出すとget_class_methods()、メソッドのリストが表示されますが、何らかの理由でonが呼び出されません。私は電話をかけることさえでき、それは機能します。$options[0][0]their_callbackcall_user_func_array($options[0], $options[1]);my_callbackMyClass$options[0][0]->my_callback('HELLO');

残念ながら、their_callerまたはを変更することはできませんtheir_callback。それらはフレームワークの一部です。それが機能するのを妨げているアイデアはありますか?

4

1 に答える 1