从PHP中的数组调用方法

时间:2014-11-13 14:31:12

标签: php

我上了课,让我们说'A" A"以及属性private $subModules=Array('func1', 'func2'),其中func1func2是A类中私有方法的名称。

A类还有一个函数public run(),我尝试从属性$ subModules运行方法:

class A extends B {
  private $subMethods = Array('func1', 'func2');
  private function func1($a) { // do something }
  private function func2($a) { // do something else}
  public function run() {
     foreach ($this->subMethods as $fnc) {
        call_user_func(array($this, $fnc));
    }
 }

你能告诉我这有什么问题吗?我尝试做这样的事情: $this->func1('5');

错误信息是这样的:

   Argument 1 passed to A::func2() must be an instance of B, none given

谢谢!

1 个答案:

答案 0 :(得分:3)

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

应该是:

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

话虽如此......你不为私人方法提供参数......以下内容将起作用:

<?php

class A {
  private $subMethods = Array('func1', 'func2');
  private function func1($a) { echo '1'.$a; }
  private function func2($a) { echo '2'.$a; }
  public function run($a) {
     foreach ($this->subMethods as $fnc) {
        call_user_func(array($this, $fnc), $a);
    }
 }
}

$a = new A;

$a->run('test');

?>