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()Nelson 的回答。

于 2012-11-25T13:27:34.553 回答