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)); // 这样也可以执行
请问此问题如何解决?