Доступ к функции-члену объекта, который является переменной-членом родительского класса

Я пытаюсь получить доступ к функции объекта из дочернего класса, где объект является защищенной переменной родителя.

Я не совсем уверен, что лучший способ сделать это … любая помощь или указатели будут оценены.

Ниже показано, как я настроил его сейчас, но он не работает. Это дает следующую ошибку:

Исправляемая фатальная ошибка: аргумент 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();
}

1

Решение

Не создавайте экземпляр отдельного родительского класса, он будет создан как часть создания дочернего класса.

Также передайте объект дочернему экземпляру и создайте метод __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();
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]