Inversion of Control (IoC) ist ein Designprinzip in der objektorientierten Programmierung, das verwendet werden kann, um die Kopplung zwischen Computercodes zu reduzieren. Die gebräuchlichste Methode heißt Dependency Injection (DI).
Das Ändern der Implementierung von Abhängigkeitsschnittstellen durch Konfiguration ist auch die grundlegendste und wichtigste Funktion der Abhängigkeitsinjektion
Kontrollieren Sie flexibel den Instanzumfang der Abhängigkeitsimplementierung, Singleton, eine pro Thread, eine pro Anfrage usw.
Verwaltung von Abhängigkeitsparametern, Abhängigkeitsabhängigkeiten usw.
Der Code ist prägnanter und die Logik ist klarer
Mock ist praktisch zum Testen (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Beherrschung )
Im Allgemeinen geht es darum, die Abhängigkeiten zwischen Funktionsblöcken und Klassen in der Anwendung über ein einheitliches Framework zentral zu verwalten
Ein einfaches Beispiel für die Abhängigkeitsinjektion
Bitte beachten Sie den folgenden Code:
<?php class Container { private $s=array(); function __set($k, $c) { $this->s[$k]=$c; } function __get($k) { return $this->s[$k]($this); } }
Wie können wir mit der Containerklasse die Beziehung zwischen A und B verwalten? Lassen Sie uns im Code sprechen:
<?php class A { private $container; public function __construct(Container $container) { $this->container = $container; } public function doSomeThing() { //do something which needs class B $b = $this->container->getB(); //to do } }
Dann fügen Sie Klasse B in die Containerklasse ein:
$c = new Container(); $c->setB(new B());
Sie können auch eine anonyme Funktion übergeben, sodass Klasse B nicht übergeben wird. Sie wird sofort instanziiert. aber die Instanziierungsarbeit ist erst abgeschlossen, wenn sie tatsächlich aufgerufen wird:
$c = new Container(); $c->setB(function (){ return new B(); });
Das obige ist der detaillierte Inhalt vonWas nützt die PHP-Abhängigkeitsinjektion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!