我尝试在 Child 类中调用 getTest()函数。 首先,我初始化 Ext 类的实例,因此我假设主要属性 $ ext 现在应该包含它。但 Child 类不会继承它并获取错误消息:
在非对象上调用成员函数getTest()
问题出在哪里?
<?php
$A = new Main;
class Main
{
protected $ext = null;
function __construct()
{
$this->ext= new Ext();
new Child;
}
}
class Child extends Main
{
function __construct()
{
echo $this->ext->getTest();
}
}
class Ext extends Main
{
public function getTest()
{
return "cool";
}
}
?>
我知道要以其他方式解决它:
class Child
{
private $Main;
function __construct( &$Main ) { ... }
}
但我想了解为什么这不起作用..
答案 0 :(得分:2)
在构造对象时,属性还没有值。
在使用属性
之前,需要调用父构造函数function __construct()
{
parent::__construct();
echo $this->ext->getTest();
}