Ein Neuling, der Laravel lernt, hat den Container und die Abhängigkeitsinjektion in der Dokumentation noch nie ganz verstanden. Kann jemand auf leicht verständliche Weise erklären, was es ist? Wo muss es in konkreten Projekten eingesetzt werden?
Ein Neuling, der Laravel lernt, hat den Container und die Abhängigkeitsinjektion in der Dokumentation noch nie ganz verstanden. Kann jemand auf leicht verständliche Weise erklären, was es ist? Wo muss es in konkreten Projekten eingesetzt werden?
Dieser Artikel ist gut geschrieben http://laravelacademy.org/pos...
Service Container
Wenn die Arbeit der Klasse A von den Klassen B und C abhängen muss, ist es traditionell, neue B- und neue C-Klassen innerhalb der Klasse A auszuführen, bevor die von B und C bereitgestellten Dienste genutzt werden. Dadurch entsteht Klasse A und B und C Starke Kopplung. Aber mit Service Container
kann der Abhängigkeitskonstruktionsprozess durch den Container gelöst werden, und Klasse A muss nur die Klassen B und C oder die Abstraktionen (Schnittstellen) von B und C in Constructor
oder Method Getter/Setter
einfügen Abhängigkeitsinjektion und Methodenabhängigkeitsinjektion (Dependency Injection
) realisieren die Entkopplung von Klasse A von B und C. Beispiel: Wenn die Schnittstellen von B und C injiziert werden, können Sie B und C jederzeit durch D, E ersetzen. D und E müssen nur die entsprechenden Schnittstellen implementieren, sodass A lose mit B und C gekoppelt ist.
Es gibt drei Methoden, um Dienste an den Service-Container in Laravel zu binden: bind(),singleton(),instance()
; die Methode zum Parsen von Diensten ist die make()
-Methode. Die Methode \Illuminate\Container\Container::getDependencies(),\Illuminate\Container\Container::call()
wird verwendet, um Konstruktorabhängigkeiten oder Methodenabhängigkeiten zu lösen. Einer der wichtigen Wissenspunkte ist die Verwendung der Reflection-Funktion von PHP.
Weitere Informationen finden Sie im Quellcode. Ich hoffe, das hilft.