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

Was nützt die PHP-Abhängigkeitsinjektion?

(*-*)浩
(*-*)浩Original
2019-09-16 10:32:323486Durchsuche

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); }
}

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!

Stellungnahme:
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