Я пытаюсь получить доступ к функции объекта из дочернего класса, где объект является защищенной переменной родителя.
Я не совсем уверен, что лучший способ сделать это … любая помощь или указатели будут оценены.
Ниже показано, как я настроил его сейчас, но он не работает. Это дает следующую ошибку:
Исправляемая фатальная ошибка: аргумент 1 передан в App \ Parent :: __ construct ()
должен быть экземпляром App \ Object, ни один не задан, вызван в
Controller.php в строке 25 и определен в Parent.php в строке 12
Поэтому, как я понимаю ошибку, мне нужно как-то передать экземпляр класса Parent в класс Child. Но это кажется анти-паттерном, потому что он расширяет класс Parent. Я, должно быть, упускаю что-то основное
Parent.php
class Parent
{
protected $object;
public function __construct(Object $object) // line 12
{
$this->object = $object;
}
}
Child.php
class Child extends Parent
{
public function doStuff()
{
return parent::$object->objectFunction());
}
}
controller.php
...
namespaces etc
...
public function control()
{
$parent = new Parent(new Object($variable));
$child = new Child(); // line 25
$child->doStuff();
}
Не создавайте экземпляр отдельного родительского класса, он будет создан как часть создания дочернего класса.
Также передайте объект дочернему экземпляру и создайте метод __construct () и передайте ему параметр.
class Child extends Parent
{
public __construct($var)
{
parent::__construct($var);
}
public function doStuff()
{
return parent::$object->objectFunction());
}
}
controller.php
public function control()
{
//$parent = new Parent(new Object($variable));
$child = new Child(new Object($variable)); // line 25
$child->doStuff();
}
Других решений пока нет …