Heim >Backend-Entwicklung >PHP-Problem >Verstehen Sie einfach die DI-Abhängigkeitsinjektion in PHP
Dieser Artikel bringt Ihnen relevantes Wissen über PHP, das hauptsächlich verwandte Themen zur Abhängigkeitsinjektion vorstellt. DI bezieht sich tatsächlich auf die automatische Injektion von Abhängigkeiten in Klassen durch Konstruktoren. Schauen wir uns das an, ich hoffe, es hilft alle.
(Empfohlenes Tutorial: PHP-Video-Tutorial)
Abhängigkeitsinjektion DI bedeutet eigentlich im Wesentlichen, dass die Abhängigkeiten einer Klasse automatisch durch den Konstruktor injiziert werden Sie betreiben derzeit eine Klasse, 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, dass die Parameterdaten als Objekt übergeben werden. Wann. Genau genommen besteht eine gegenseitige Abhängigkeit zwischen den beiden Klassen. Die Methode zur Übergabe von Parametern wird als Abhängigkeitsinjektion bezeichnet, wenn PHP nicht verwendet werden muss Eine andere Klasse in einer Klasse führt häufig die folgenden Vorgänge aus
Wenn ich beispielsweise die Adapterklasse in der Containerklasse verwenden muss, muss sie vor der Verwendung instanziiert werden
Wenn eine große Anzahl externer Klassen verwendet werden muss Dies führt dazu, dass der Kopplungsgrad zu hoch ist, was leicht zu späteren Wartungsschwierigkeiten führen kann
<?php class container { private $adapter; public function __construct() { $this->adapter = new adapter(); } }
Einfache Abhängigkeitsinjektion
Der Kopplungsgrad des obigen Codes ist zu hoch, was zur Entstehung einer Abhängigkeitsinjektion führt, hauptsächlich zum Verständnis der Kopplung
Im folgenden Fall müssen wir nur das erforderliche Klassenobjekt übergeben Betrieben
Der Parameter der Abhängigkeitsinjektionsoperation ist das Objekt anstelle gewöhnlicher Parameter. Haben Sie ein besseres Verständnis? Aber eine so einfache Abhängigkeitsinjektion führt dazu, dass es sehr lange dauert, wenn Sie von vielen Klassen abhängig sind Wenn Sie Parameter übergeben, kann es leicht zu Verwirrung kommen Legen Sie das Objekt fest. Zu diesem Zeitpunkt können wir das Problem zu vieler Abhängigkeiten und verwirrender Parameter lösen Container
<?php class container { private $adapter; public function __construct(adapter $adapter) { $this->adapter = $adapter; } }
Abhängigkeitsinjektion auf hoher Ebene optimieren
In der obigen Anwendung injizieren wir die instanziierten Objekte direkt in den Container
Dadurch werden alle Objekte instanziiert Bevor sie verwendet werden, kann es zu Ressourcenverlusten kommen
Wir können Schließungen übergeben. Auf diese Weise wird das Objekt nicht instanziiert und injiziert. Wenn Sie es verwenden müssen, können Sie es erneut instanziieren, was den Verlust von Serverressourcen reduzieren kann
<?php class container { public $instance = []; public function __set($name, $value) { $this->instance[$name] = $value; } } $container = new container(); $container->adapter = new adapter(); $container->autofelix = new autofelix();
)
Das obige ist der detaillierte Inhalt vonVerstehen Sie einfach die DI-Abhängigkeitsinjektion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!