Heim  >  Artikel  >  Backend-Entwicklung  >  Gemeinsame Nutzung der Zusammenfassung der PHP-Abhängigkeitsinjektion

Gemeinsame Nutzung der Zusammenfassung der PHP-Abhängigkeitsinjektion

WBOY
WBOYnach vorne
2022-04-13 13:01:596624Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über PHP und stellt hauptsächlich Fragen im Zusammenhang mit der Abhängigkeitsinjektion vor, einschließlich der Frage, was eine Abhängigkeitsinjektion ist, die Gründe für die Abhängigkeitsinjektion und die Anwendung der Abhängigkeitsinjektion usw. Ich hoffe, dass er für alle nützlich sein wird . helfen.

Gemeinsame Nutzung der Zusammenfassung der PHP-Abhängigkeitsinjektion

Empfohlene Studie: „PHP-Video-Tutorial

Verstehen Sie PHP Dependency Injection, nachdem Sie eine Weile PHP gelernt haben, aber sie haben nur wenig davon In meinem Fall verstehen Sie, dass die Abhängigkeitsinjektion tatsächlich ein PHP-Programmierentwurfsmuster ist. Obwohl es nicht als Entwurfsmuster klassifiziert ist, besteht die Existenz von Entwurfsmustern für die Effizienz der Programmierung und natürlich der Abhängigkeitsinjektion.

1. Was ist Dependency Injection (DI)

  • Dependency Injection (DI) bezieht sich eigentlich auf die automatische Injektion von Abhängigkeiten in eine Klasse durch den Konstruktor
  • Laienhaft ausgedrückt bedeutet dies, dass Sie gerade eine Klasse betreiben , aber Einige Methoden oder Funktionen dieser Klasse können nicht von dieser Klasse allein abgeschlossen werden, sondern müssen mit Hilfe einer anderen Klasse abgeschlossen werden. Das direkteste Zeichen ist, wenn die Parameterdaten als Objekt übergeben werden. Genau genommen besteht eine gegenseitige Abhängigkeit zwischen den beiden Klassen. Der Grund für die Entstehung der Abhängigkeitsinjektion ist Wenn ich eine andere Klasse in einer Klasse verwende, funktioniert sie wie folgt
  • Wenn ich beispielsweise die Adapterklasse in der Containerklasse verwenden muss, muss sie vor der Verwendung instanziiert werden

    Wenn sie verwendet werden muss Eine große Anzahl externer Klassen führen dazu, dass der Kopplungsgrad zu hoch ist, was leicht zu späteren Wartungsschwierigkeiten führen kann. Der Container kann ohne externe Klassen nicht funktionieren. Dies wird als zu hoher Kopplungsgrad bezeichnet. Einfache Abhängigkeitsinjektion

Der obige Code ist zu stark gekoppelt, was zur Entstehung einer Abhängigkeitsinjektion führt, hauptsächlich zum Verständnis der Kopplung

Wie unten gezeigt, müssen wir nur das Klassenobjekt übergeben, das bedient werden muss.
  • Die Parameter der Abhängigkeitsinjektionsoperation sind Objekte, keine gewöhnlichen Parameter.
  • Aber eine so einfache Abhängigkeitsinjektion führt dazu, dass es lange dauert, bis Sie dies tun Parameter übergeben. Leicht zu verwechseln
  • <?php
    class container
    {
        private $adapter;
    
        public function __construct()
        {
            $this->adapter = new adapter();
        }
    }
  • 4. Abhängigkeitsinjektion auf hoher Ebene

Um das oben genannte Problem der Parameterverwirrung zu lösen, hat sich zu diesem Zeitpunkt die Abhängigkeitsinjektion entwickelt

Durch die magische Methode __get Sets Das Objekt
  • Wenn Sie sich für Magie interessieren. Wenn Sie nicht viel über die Methode wissen, lesen Sie bitte meinen vorherigen Artikel: Ausführliche Erklärung der magischen Methoden in PHP
  • Zu diesem Zeitpunkt können wir das Problem zu vieler Abhängigkeiten lösen und verwirrende Parameter
  • <?php
    class container
    {
        private $adapter;
    
        public function __construct(adapter $adapter)
        {
            $this->adapter = $adapter;
        }
    }
  • 5. Anwendung der Abhängigkeitsinjektion

Definieren wir zunächst eine Containerklasse, die hauptsächlich zum Einfügen der Klassen, die Sie betreiben möchten, in den Container verwendet wird Das Containerobjekt. 6. Optimierung auf hoher Ebene

  • ist oben In der Anwendung injizieren wir die instanziierten Objekte direkt in den Container
  • Dadurch werden alle Objekte erneut instanziiert, bevor sie verwendet werden, was zu Ressourcenverlust führt
  • Wir können den Abschluss übergeben, damit das Objekt nicht durch Instanziierung injiziert wird. Wenn Sie es verwenden müssen, können Sie es erneut instanziieren
  • , um den Verlust von Serverressourcen zu reduzieren
<?php
class container
{
    public $instance = [];

    public function __set($name, $value)
    {
        $this->instance[$name] = $value;
    }
}

$container = new container();

$container->adapter = new adapter();

Empfohlenes Lernen: „PHP Video-Tutorial"

    Das obige ist der detaillierte Inhalt vonGemeinsame Nutzung der Zusammenfassung der PHP-Abhängigkeitsinjektion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen