PHP
Wenn Sie eine Klasse in einer anderen Klasse verwenden müssen, führen Sie häufig die folgenden Vorgänge ausWenn ich beispielsweise die Adapterklasse in der Containerklasse verwenden muss, muss ich sie vor der Verwendung instanziieren
Wenn eine große Anzahl externer Klassen verwendet werden muss, führt dies zu einem zu hohen Kopplungsgrad, was leicht zu späteren Wartungsschwierigkeiten führen kann
Laienhaft ausgedrückt bedeutet dies, dass der Container ohne externe Klassen nicht funktionieren kann. Dies wird als zu hohe Kopplung bezeichnet
<?php class container { private $adapter; public function __construct() { $this->adapter = new adapter(); } }
Der PHP-Editor Baicao führt Sie in die Materie Dependency Injection (DI) ein. Dependency Injection ist ein Software-Designmuster, das zur Verbesserung der Flexibilität und Wartbarkeit von Code beiträgt. In diesem Artikel werden die Konzepte, Prinzipien und praktischen Anwendungen von DI in PHP ausführlich vorgestellt und Ihnen dabei geholfen, die Abhängigkeitsinjektionstechnologie besser zu verstehen und anzuwenden. Einfache Abhängigkeitsinjektion
Der obige Code ist zu stark gekoppelt, was zur Entstehung einer Abhängigkeitsinjektion führt, hauptsächlich zur Entkopplung Im folgenden Fall müssen wir nur das Klassenobjekt übergeben, das bedient werden muss
Die Parameter des Abhängigkeitsinjektionsvorgangs sind Objekte anstelle gewöhnlicher Parameter. Haben Sie ein besseres Verständnis?
Aber eine so einfache Abhängigkeitsinjektion führt dazu, dass die Übergabe von Parametern lange dauert, wenn Sie von vielen Klassen abhängig sind, und dass es leicht zu Verwirrung kommt
<?php class container { private $adapter; public function __construct(adapter $adapter) { $this->adapter = $adapter; } }
Verwenden Sie die magische Methode, um das Objekt festzulegen
Zu diesem Zeitpunkt können wir das Problem zu vieler Abhängigkeiten und verwirrender Parameter lösen
<?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();
Der PHP-Editor Baicao führt Sie in die Materie Dependency Injection (DI) ein. Dependency Injection ist ein Software-Designmuster, das zur Verbesserung der Flexibilität und Wartbarkeit des Codes beiträgt. In diesem Artikel werden das Konzept, das Prinzip und die praktische Anwendung von DI in PHP ausführlich vorgestellt, um Ihnen zu helfen, die Abhängigkeitsinjektionstechnologie besser zu verstehen und anzuwenden. Abhängigkeitsinjektionsanwendung
Wir definieren zunächst eine
<?php class container { public $instance = []; public function __set($name, $value) { $this->instance[$name] = $value; } } class adapter { public $name = '我是调度器'; } $container = new container(); $container->adapter = new adapter(); class autofelix { private $container; public function __construct(container $container) { $this->container = $container; } public function who($class) { return $this->container->instance[$class]->name; } } $autofelix = new autofelix($container); $who = $autofelix->who('adapter'); var_dump($who); //我是调度器
Der PHP-Editor Baicao führt Sie in die Materie Dependency Injection (DI) ein. Dependency Injection ist ein Software-Designmuster, das zur Verbesserung der Flexibilität und Wartbarkeit des Codes beiträgt. In diesem Artikel werden das Konzept, das Prinzip und die praktische Anwendung von DI in PHP ausführlich vorgestellt, um Ihnen zu helfen, die Abhängigkeitsinjektionstechnologie besser zu verstehen und anzuwenden. Optimierung der Abhängigkeitsinjektion auf hohem Niveau
Dadurch werden alle Objekte instanziiert, bevor sie verwendet werden, was zu einem Ressourcenverbrauch führt
Serverressourcen reduzieren kann
<?php $container = new container(); $container->adapter = new adapter(); //高阶优化 $container = new container(); $container->adapter = function () { return new adapter(); };
Das obige ist der detaillierte Inhalt vonErfahren Sie in einem Artikel mehr über die DI-Abhängigkeitsinjektion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!