Matti Mäkitalo: Noch zum Thema OOP

Beitrag lesen

Hi,

Ich habe eine Klasse die eine Verbindung zu meiner DB aufbaut. Wäre hier das Singleton pattern sinnvoll?

Eigentlich klingt das nicht nach einem Anwendungsfall für das Singleton-Pattern. Darauf zu verzichten ist zunächst komplizierter, du machst dir aber dadurch das Testen deutlich schwerer.

Andere Frage ist, wie ich diese DB Instanz in meine anderen Klassen "reinbekomme"?
Extend?

Nein, auf keinen Fall. Du solltest nur ableiten, wenn sich die abgeleitete Klasse wie die ursprüngliche verhalten soll.

Dazu formulierst du das ganze am Besten in Prosa.
Jede Klasse sollte in einem Satz formulierbar sein, und zwar ohne die Verwendung des Wortes "und". Dadurch stellst du sicher, dass deine Klasse genau eine Bedeutung hat (das ist das S in SOLID). Wenn du irgendeine Klasse (bsp.: die Auto-Klasse) von einer DatabaseConnectionFactory (wenn ich deine Klasse mal so nennen darf), lautet die Beschreibung auf einmal: "Die Klasse Auto beschreibt ein Auto und kann Datenbank-Verbindungen aufbauen". *piiiiep* ZONK!

Du suchst nach dem Prinzip Dependency Injection. Schau z.B. mal bei PHP The Right Way, da ist es erklärt. Meistens nutzt man in PHP einen Dependency Injection Container, welcher sich um das Instanziieren deiner Objekte kümmert (inkl. derer Abhängigkeiten). Irgendwo vorne greifst du dann auf das erste Objekt zu, welches du brauchst; dieses ist dann durch den DI-Container vollständig aufgebaut.

Bis die Tage,
Matti