Heim > Backend-Entwicklung > PHP-Problem > Was nützt die PHP-Abhängigkeitsinjektion?

Was nützt die PHP-Abhängigkeitsinjektion?

(*-*)浩
Freigeben: 2023-02-24 06:48:02
Original
3594 Leute haben es durchsucht

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).

Was nützt die PHP-Abhängigkeitsinjektion?

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); }
}
Nach dem Login kopieren

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
  }
}
Nach dem Login kopieren

Dann fügen Sie Klasse B in die Containerklasse ein:

$c = new Container();
$c->setB(new B());
Nach dem Login kopieren

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();
});
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage