class A {
public function foo() {
echo 'ok';
}
}
class B {
protected $var;
public function __construct(A $a) {
$this->var = $a;
}
}
class C extends B {
public function __invoke() {
$this->var->foo();
}
}
$var = new C(new A);
$var();
我得到:
PHP Notice: Undefined property: C::$var in /var/www/.../q.php on line 17
PHP Fatal error: Uncaught Error: Call to a member function foo() on null in /var/www/.../q.php:17
Stack trace:
#0 /var/www/.../q.php(22): C->__invoke()
#1 {main}
thrown in /var/www/.../q.php on line 17
早些时候,当 C 和 B 是一个班级时,一切正常。
到这里我明白了不仅没有调用构造函数,连$var都没有被继承,为什么呢?
1 个回答