call_user_func_array 和 __call 创建无限循环

我有一个class A和class B从它继承class A,我想在我运行功能来运行一些检查。


class A {

  public class __call($name, $params) {

     if (method_exists?($this, $name)) {

       $result = call_user_func_array([$this, $name], $params);

       return $result;

     }

  }

}


class B {

  private function hello() {

    echo "Hello"

  }

}

当我打电话时,我期待着:


$b = new B();

$b->hello();

它将调用__call然后执行private function hello,但它开始无限循环,看起来又call_user_func_array触发__call了。但是如果我hello在class A


这是预期的行为吗?我能做些什么来防止这种情况发生吗?


catspeake
浏览 128回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP