Ich habe ein Huhn-Ei-Problem. Ich möchte auch ein System in PHP in einer OOP-Weise implementieren, in der zwei Klassen eine wichtige Rolle spielen: Datenbank und Protokoll. Meine Idee war, die Verbindung durch die Datenbank-Klasse aufzubauen, die öffentliche Methoden haben würde, z. runQuery (sUpdateQuery), doInsert (sInsert) usw. Die Log-Klasse schreibt Protokolle über gängige Methoden genauso wie logMessage (message), logDatabaseQuery (sQuery) TO DATABASE. Das Problem kommt jetzt.Egg-Huhn Problem in OOP Weg
1: Innerhalb der Methoden der Klasse des Datenbank würde ich gerne der Lage sein, die logDatabaseQuery (sQuery) Logbuch Klasse
2 zu verwenden: wäre dies noch nicht eine große Herausforderung sein, wenn ich nicht das verwenden möchten Die doInsert-Methode (sInsert) der Datenbankklasse innerhalb der logDatabaseQuery-Methode.
Ich möchte es einfach halten - und nur eine Instanz des Datenbankverbindungsobjekts verwenden, und von den Loggeras gut, wenn es möglich ist.
Für viele Menschen wäre Singleton Modell die erste Idee zu wählen, aber ich würde definitiv gerne andere Lösung verwenden.
So würde es zwei Klassen, die jeweils-andere Methoden verwenden würden:
Datenbank doInsert logDatabaseQuery
Log logDatabaseQuery doInsert
Ich mag würde separat die Log Methoden halten (in der Log-Klasse), da es später andere Methoden zur Protokollierung nicht nur in der Datenbank, sondern auch in Dateien oder E-Mails geben würde.
Irgendwelche Ideen, wie dies auf die schönste, OOP-freundliche Art und Weise geschehen sollte?
Ich war um eine gemeinsame übergeordnete abstrakte Klasse zu denken, oder über Schnittstellen als auch verwenden, aber schließlich nicht die richtige Art und Weise herausfinden konnte :(
Was würde ich ein Vorschlag für eine korrekte Klassenhierarchie weiß, ist
Jungs, vielen Dank für Ihre Antworten. Jetzt kann ich deutlich sehen - wovor ich etwas Angst hatte, dass meine Idee falsch war. Jetzt kann ich verstehen, dass ich den Datenbankzugriff zumindest in zwei Klassen trennen muss. – simply4it