Ich überarbeite eine PHP- Anwendung und versuche, so viel Abhängigkeitsinjektion (DI) wie möglich zu machen.
Ich habe das Gefühl, dass ich ein gutes Verständnis dafür habe, wie es funktioniert, und ich kann sicher sehen, dass meine Klassen viel schlanker und robuster werden.
Ich überarbeite, damit ich eine Abhängigkeit einfügen kann, anstatt ein neues Objekt innerhalb der Klasse zu erstellen, aber irgendwann muss ich einige Objekte erstellen, dh das gefürchtete new
Schlüsselwort verwenden.
Das Problem, auf das ich jetzt gestoßen bin, ist, an welchem Punkt kann ich tatsächlich neue Objekte erstellen? Es sieht so aus, als würde ich in einer Klasse der obersten Ebene landen und viele neue Objekte erstellen, da es keinen anderen Ort gibt, an den ich gehen kann. Das fühlt sich falsch an.
Ich habe einige Blogs gelesen, die Factory-Klassen verwenden , um alle Objekte zu erstellen, und dann fügen Sie die Factory in andere Klassen ein. Sie können dann die Factory-Methoden aufrufen, und die Factory erstellt das neue Objekt für Sie.
Mein Anliegen dabei ist jetzt, dass meine Fabrikklassen new
für alle kostenlos sein werden! Ich denke, das mag in Ordnung sein, da es sich um Fabrikklassen handelt, aber gibt es einige Regeln, an die man sich halten muss, wenn man ein Fabrikmuster und DI verwendet, oder gehe ich hier weit von der Marke ab?
new
. Natürlich gibt es einige Einstiegspunkte, an denen Sie den IoC-Container aufrufen müssen, aber es sollten nicht viele vorhanden sein. Normalerweise konfigurieren Sie das IoC einmal und fordern dann an, dass eine Klasse pro Anforderung aufgelöst wird. Im Fall von MVC ist dies normalerweise der Controller.