Ну, во-первых, вам не нужно parent::$this->arraybase()
. Просто сделай $this->arraybase()
. На самом деле, я даже не уверен, что у вас есть правильный синтаксис. Но я отвлекся.
Что касается вашей конкретной проблемы, вы можете:
Добавить конструктор (и удалить вызов ->arraybase()
из addArray()
):
public function __construct() {
$this->array = new ArrayObject();
}
Добавьте проверку if для звонка на ->arraybase()
:
public function addArray($value) {
if (!isset($this->array) || !is_object($this->array)) {
$this->arraybase();
}
...
}
Лично я бы сделал # 1. Это будет более надежным, быстрым и более соответствующим парадигмам ООП.
РЕДАКТИРОВАТЬ: Добавление информации о конструкторе
Итак, если ваш базовый класс имеет этот конструктор:
public function __construct($some, $vars) {
......
}
Вы бы сделали это в вашем расширенном классе:
public function __construct($some, $vars) {
parent::__construct($some, $vars);
$this->array = new ArrayObject();
}
ПРИМЕЧАНИЕ. Не звоните parent::__construct()
, если только у одного из родителей нет метода __construct ...