1

名前が配列に格納されている関数の呼び出しに問題があります。

class tempClass {
   function someFunction() {
      $tempArray = array('functionName' => 'tempFunction');
      $tempArray['functionName']();
   }

   function tempFunction() {
      echo "inside function";
   }
}

それは私にエラーを与えます:

"Fatal error: Call to undefined function tempFunction() in /..... line..".

行番号は、関数が呼び出されている行です。$tempArray['functionName']();

しかし、 を呼び出すとmethod_exists()、メソッドが存在することが示されます。とても紛らわしいです。誰でも私を助けてもらえますか?ありがとう。

4

2 に答える 2

4

次のようにcall_user_func()を使用します。

call_user_func($tempArray['functionName']);

更新:
クラス内からクラスのメソッドを呼び出したい場合は、代わりに次を使用します。

call_user_func(array($this, $tempArray['functionName']));

実際のデモを見る

于 2012-11-25T13:25:34.333 に答える
2

メソッドがクラスまたはオブジェクト内に存在するかどうかを尋ねますが、そのスコープなしで呼び出します。それはうまくいきません...

代わりにこれを試してください:

call_user_method($tempArray['functionName'],$this);

ちょうどそれcall_user_method()が減価償却されているのを見ました。call_user_func()代わりにネルソンの回答を使用してください。

于 2012-11-25T13:27:34.553 に答える