PHP Variablen aus unterschiedlichen Klassen abhängig von Einander

Spartan-117

Cadet 3rd Year
Registriert
Nov. 2010
Beiträge
41
Hallo

Ich entschuldige mich schon mal im Voraus für diesen nicht sehr aussagekräftigen Titel, jedoch fiel mir um diese Uhrzeit kein Passenderer ein.

Also, nehmen wir an, wir haben 2 Klassen. "ersteKlasse" wird zuerst per require eingebunden und instanziert. Danach kommt "zweiteKlasse", welche eine Variable hat, die "ersteKlasse" benötigt. Nur leider funktioniert dies nicht, da bei der Ausgabe der ersten Klasse die Zweite gar nicht existiert.

index.php
PHP:
require('./class1.php');
$ersteKlasse = new ersteKlasse();
require('./class2.php');
$zweiteKlasse = new zweiteKlasse();

class1.php
PHP:
class ersteKlasse {
	public function __construct() {
		global $zweiteKlasse;
		echo $zweiteKlasse->text;
	}
}

class2.php
PHP:
class zweiteKlasse {
	public $text = "hey";
}

Also eigentlich geht es um eine erste Klasse, welche die Datenbankfunktionen bereitstellt und um eine Zweite, welche Texte in verschiedenen Sprachen bereitstellt. Die Zweite ist von der Ersten abhängig, da dort Datenbankabfragen durchgeführt werden. Nun ist jedoch die Erste auch von der Zweiten abhängig, da bei fehlgeschlagener Datenbankverbindung ein Fehler ausgegeben werden soll. Dieser Fehlertext wird von Klasse 2 bereitgestellt. Da jedoch beim Aufruf des Konstruktors der ersten Klasse, die Zweite garnicht existiert, bekomme ich folgende Fehlermeldung:
Notice: Trying to get property of non-object in * on line *
In dieser Linie wird eben der Text von Klasse 2 abgerufen.

Wie kann ich dieses Problem lösen?

Vielen Dank,
Spartan-117
 
Spartan-117 schrieb:
index.php
PHP:
require('./class1.php');
require('./class2.php');
$zweiteKlasse = new zweiteKlasse();
$ersteKlasse = new ersteKlasse($zweiteKlasse);

class1.php
PHP:
class ersteKlasse {
	public function __construct($zweiteKlasse) {
		echo $zweiteKlasse->text;
	}
}

class2.php
PHP:
class zweiteKlasse {
	public $text = "hey";
}

Und falls zweiteKlasse dann auch noch ersteKlasse braucht, eine Variable/Funktion in zweiteKlasse und dann nach dem "new ersteKlasse.." setzen.
 
Vielen Dank für den Tipp lynxx, jedoch habe ich es so gelöst, indem ich einfach eine eigene Klasse für die Texte erstellt und diese vor der Datenbank-Klasse instanziert.

Thread kann von mir aus geschlossen werden. :)
 
Zurück
Oben