PHP:调用动态函数,但是在一个类中?

时间:2011-01-11 04:32:23

标签: php oop class

我正在尝试创建一个初始化函数,它将调用类中的多个函数,最终结果的一个简单示例如下:

$foo = new bar;
$foo->call('funca, do_taxes, initb');

这通常可以使用call_user_func函数正常工作,但我真正想要做的就是在类中执行此操作,我不知道如何执行此操作,我的非工作代码的快速示例如下:

class bar {
   public function call($funcs) {
       $funcarray = explode(', ', $funcs);
       foreach($funcarray as $func) {
          call_user_func("$this->$func"); //???
       }
   }
   private function do_taxes() {
       //...
   }
}

我如何调用动态类函数?

4 个答案:

答案 0 :(得分:7)

您需要使用数组,例如Example #4 in the manual

call_user_func(array($this, $func));

答案 1 :(得分:5)

它实际上比您想象的要简单得多,因为PHP允许variable variables之类的东西(以及变量对象成员名称):

foreach($funcarray as $func) {
    $this->$func();
}

答案 2 :(得分:0)

您需要做的就是

$this->$func();
编辑 - 无视上一篇文章,我有点仓促和误解

对于本机或用户功能,您可以代替call_user_func执行类似操作

function arf($a) {print("arf $a arf");}

$x = 'strlen';
$f2 = 'arf';

print($x('four')."\n");
$f2($arg1);

OUT

4
arf  arf 

答案 3 :(得分:0)

当我们想要检查类中是否存在类函数/方法时,

然后这可以帮助

内部课程......

 $class_func = "foo";

 if(method_exists($this , $class_func ) ){
    $this->$class_func();
  }

 public function foo(){
   echo " i am called ";
 }