Hallo zusammen.
Ich bin gerade dabei ein Framework zu schreiben, jedoch habe ich ein kleines Problem bei der objektorientierten Umsetzung des Ganzen.
Ich versuche mal kurz das Problem zu umreißen:
Es gibt eine Klasse BaseObject, von der alle anderen Klassen bis auf die Logs abgeleitet werden. Das BaseObject verfügt über einen Konstruktor, in dem die Log-Datei geöffnet wird, natürlich alles objektorientiert
PHP-Code:
$this->error_log = new Log("logs/error.log");
Das Ganze soll dazu dienen, dass später aus jedem anderen Objekt durch den Aufruf von
PHP-Code:
$this->error_log->add(Fehlermeldung);
auf das Log-Objekt zugegriffen werden kann. Dazu ist es nützlich ein Zentrales Log-Objekt zu erzeugen, statt bei jeder Instanziierung ein neues. Beim recherchieren bin ich dabei auf die Singleton-Variante gestoßen, bei der das Objekt, soweit ich verstanden habe, nur einmal erzeugt wird und dann immer über obj->getInstance() darauf zugegriffen wird.
Die Klassen sind wie folgt aufgebaut:
Code:
BaseObject
Config
Controller
Page
Log
ErrorLog
UserLog
Client
Wenn nun im Konstruktor von BaseObject ein Objekt der Klasse ErrorLog instanziiert wird, wie kann ich dann in Unterklassen von BaseObject auf das gleiche Objekt zugreifen ohne ein Neues erzeugen zu müssen?
Hier noch der Konstruktor von BaseObject
PHP-Code:
public function __construct()
{
$this->client = new Client();
$this->error_log = LogFile::getInstance("logs/error.log");
}
Der Parameter bei getInstance ist da, weil das Objekt ja mindestens einmal erzeugt werden muss. Meine Frage ist jetzt, wie genau diese Funktion getInstance($path) aussehen muss, damit erst geprüft wird, ob bereits ein Objekt der Klasse existiert und dieses ggf. zurückgegeben oder erzeugt wird.