Ich versuche, auf eine Funktion eines Objekts von einer untergeordneten Klasse zuzugreifen, wobei das Objekt eine geschützte Variable des übergeordneten Elements ist.Zugriff auf eine Elementfunktion eines Objekts, das eine Elementvariable einer übergeordneten Klasse ist
Ich bin nicht ganz sicher, der beste Weg, um darüber zu gehen ... jede Hilfe oder Hinweise würden geschätzt werden.
Unten ist, wie ich es jetzt eingerichtet habe, aber es funktioniert nicht. Es gibt die folgenden Fehler:
Catchable fatal error: Argument 1 passed to App\Parent::__construct() must be an instance of App\Object, none given, called in Controller.php on line 25 and defined in Parent.php on line 12
So wie ich den Fehler zu verstehen, muß ich irgendwie eine Instanz der übergeordneten Klasse in die Child-Klasse übergeben. Aber das scheint ein Anti-Pattern zu sein, weil es die Parent-Klasse erweitert. Ich muss etwas Grundlegendes vermissen.
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();
}
Danke, das viel mehr Sinn macht, arbeitet es jetzt! Ich werde die Antwort akzeptieren, sobald es mich lässt. –