我有一个超类,其中包含属性&设置它们的方法
class Super{
private $property;
function __construct($set){
$this->property = $set;
}
}
然后我有一个需要使用该属性的子类
class Sub extends Super{
private $sub_property
function __construct(){
parent::__construct();
$this->sub_property = $this->property;
}
}
但我一直收到错误
Notice: Undefined property: Sub::$property in sub.php on line 7
我哪里错了?
答案 0 :(得分:8)
错误在于它正在尝试找到一个名为$ property的局部变量,该变量不存在。
要在对象上下文中引用$ property,您需要$this
和箭头。
$this->sub_property = $this->property;
其次,上面的行会失败,因为$property
是private
类的Super
。改为protected
,所以它是继承的。
protected $property;
第三,(感谢Merijn,我错过了这个),Sub需要扩展Super。
class Sub extends Super
答案 1 :(得分:3)
您需要保护$ sub_property而不是私有。
答案 2 :(得分:2)
您还需要指定子类从超类扩展:
class Sub extends Super {
// code
}