Hallo Leute!
Meine Frage ist wie im Titel:
Kann eine Klasse in einer Eigenschaft ein Objekt, einer anderen Klasse instanzieren?
Wenn ich den dazu gehörigen Code ausführe, sagt PHP mir dazu folgendes:
Code:
Fatal error: Call to a member function output() on a non-object in *.php on line *
Der Code ist folgender und dient dem Zweck HTML-Code an den Browser zu geben. (Hier wegen der Länge nur Ausschnittsweise, gekürzt und vereinfacht):
Die Methode der 1. Klasse, die das Objekt instanzieren soll:
PHP-Code:
<?php
function add_text($content) {
$this->content[] = new text($content);
}
?>
Die Methode in der eine Methode auf dieses Objekt ausgeführt werden soll:
PHP-Code:
<?php
function output() {
echo '<p>';
$contents = $this->get_content();
foreach($contents as $content) {
$content->output(); //hier passiert natürlich laut PHP der Fehler
}
echo '</p>';
}
?>
Normalerweise werden nicht nur <p>-Elemente ausgeben sondern auch andere anhand anderer Eigenschaften uns es werden auch noch diverse Attribute hinzugefügt.
Zu der Methode get_content(): Sie gibt lediglich die Eigenschaft Content zurück; im Prinzip wäre also auch $this->content; möglich.
Desweiteren können der Eigenschaft content auch wieder HTML-Elemente hinzugefügt werden mit Hilfe einer Methode, die diese ins Array content schiebt. Die muss ich ja einzeln instanzieren weil sie normalerweise Inhalt haben im Gegensatz zum Text.
Schließlich die Methode in der 2.Klasse die auf das Objekt, das in der 1. Klasse instanziert wird, angewendet werden soll:
PHP-Code:
function output() {
echo $this->content;
}
Gehört zu der 2.Klasse also keine Überladung.
Ja, das Problem ist nen bissl' kompiliziert :P.
Ich hoffe ihr könnt mich trotzdem verstehen.
Danke im Vorraus an alle die sich meinem Problem widmen.
Edit: Denke mal hab das falsche Topic erwischt oder ist das hier richtig aufgehoben?