Matti Mäkitalo: PHP-Klassen in Framework global verfügbar machen

Beitrag lesen

Hallo,

Singleton-Pattern wird dir sehr kurzfristig bei deinem Problem helfen, langfristig aber viele neue Probleme verursachen. Insbesondere die (Unit-)Testbarkeit von Code leidet unter Singleton-Patterns sehr (da keine "Seams" zum injecten von Testdouble/-Mocks/... vorhanden sind), und auch architekturell ist es unschön (da eine Dependency deines Codes unsichtbar wird). Daher gilt das Singleton-Pattern generell eher zu den Anti-Pattern, von denen ich abrate (und das ist eine sehr höfliche Formulierung!).

Beschäftige dich mit Dependency Injection. Wenn deine Klasse/Code eine Abhängigkeit zu einem bestimmten Objekt hat ist es nicht dessen Aufgabe, dieses Objekt zu erstellen oder zu holen. Stattdessen sollte es dem Code übergeben werden.

Folgende Videos waren für mich ein Eye-Opener um testbaren Code zu entwickeln:

Seitdem habe ich eine gesunde und tiefe Aversion gegen Singletons und statische Methoden entwickelt.

Viele Grüße Matti