У меня есть суперкласс, который содержит свойства и методы их настройки
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
где я иду не так?
Ошибка говорит о том, что она пытается найти локальную переменную с именем $ property, которая не существует.
Чтобы ссылаться на $ property в контексте объекта, как вы и предполагали, вам нужно $this
и стрелка.
$this->sub_property = $this->property;
во-вторых, строка, указанная выше, завершится неудачно, так как $property
является private
классу Super
. Вместо этого сделайте его protected
, так что он унаследован.
protected $property;
В-третьих, (спасибо Merijn, я пропустил это), Sub должен расширить Super.
class Sub extends Super
Вам нужно сделать защиту $ sub_property вместо частной.
Вам также необходимо указать, что подкласс простирается от суперкласса:
class Sub extends Super { // code }