Heim > Artikel > PHP-Framework > ThinkPHP-Container-Umkehrung der Kontrolle und Abhängigkeitsinjektion
Der Name Dependency Injection und Inversion of Control klingt verwirrend. Nachdem Sie diesen Artikel gelesen haben, werden Sie wissen, was es ist.
Kontrollumkehr
betrachtet das Problem aus der Perspektive des Containers. Der Container steuert die Anwendung, und der Container injiziert umgekehrt die externen Ressourcen, die die Anwendung benötigt.Abhängigkeitsinjektion
Betrachten Sie das Problem aus der Perspektive der Anwendung. Die Anwendung ist darauf angewiesen, dass der Container die benötigten externen Ressourcen erstellt und einfügt.
Funktion
wird hauptsächlich verwendet, um den Grad der Kopplung zwischen Codes zu verringern.
Trennen Sie effektiv Objekte und externe Ressourcen, die von der Anwendung benötigt werden.
Die folgenden zwei Bilder können das Problem deutlich erklären
Lassen Sie mich Ihnen einen einfachen Fall geben
Definieren Sie zwei Klassen als Person und Auto, Instanz in Person und Call-Pay-in-Car-Methode.
Dann rufen Sie es im Controller auf und das gedruckte Ergebnis muss die von Car zurückgegebene 123 sein, damit dies nicht gedruckt wird.
Zu diesem Zeitpunkt ändern wir den Code und übergeben die Car-Klasse direkt an die Person-Klasse und verwenden das übergebene Objekt direkt, um die entsprechende Methode in der Person-Klasse aufzurufen.
Dies ist nur ein einfacher Implementierungsprozess, um den Weg für den Leserahmen-Containercode zu ebnen. Die Containerinjektion im Framework wird später ausführlich erläutert.
Beharrlichkeit beim Lernen, Beharrlichkeit beim Bloggen und Beharrlichkeit beim Teilen sind die Überzeugungen, an denen Kaka seit seinen Anfängen festgehalten hat. Ich hoffe, dass Kakas Artikel im riesigen Internet Ihnen ein wenig helfen können. Ich bin Kaka, bis zum nächsten Mal.
Das obige ist der detaillierte Inhalt vonThinkPHP-Container-Umkehrung der Kontrolle und Abhängigkeitsinjektion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!