php5.4版本中__call中call_user_func_array无法执行对象父类的方法

php5.4版本中__call中call_user_func_array无法执行对象父类的方法,而php5.2版本、php7可以执行。

<?php
class A {
    public function testA($i) {
        echo 'A::testA';
        return 'A';
    }
}
class B extends A {
    public function testB($i) {
        echo 'B:testB';
        return 'B';
    }
}
class C {
    private $st;

    public function __construct($b) {
        $this->st = $b;
    }

    public function __call($func, $args) {
        var_dump(array($this->st, $func));
        return call_user_func_array(array($this->st, $func), $args);
    }
}
$objB = new B();
$objC = new C($objB);
var_dump($objC->testB(1)); // 可以执行
var_dump($objC->testA(1)); // 无法执行
call_user_func_array(array($objB, 'testA'), array(1)); // 这样也可以执行

请问此问题如何解决?

阅读 1.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题