Heim > Backend-Entwicklung > PHP-Problem > Verstehen Sie einfach die DI-Abhängigkeitsinjektion in PHP

Verstehen Sie einfach die DI-Abhängigkeitsinjektion in PHP

WBOY
Freigeben: 2023-03-16 17:08:02
nach vorne
1715 Leute haben es durchsucht

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)

Was ist DI / Abhängigkeitsinjektion?

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

Laiensprachlich bedeutet dies, dass der Container ohne externe Klassen nicht funktionieren kann, was als zu hoher Kopplungsgrad bezeichnet wird

<?php
class container
{
    private $adapter;

    public function __construct()
    {
        $this->adapter = new adapter();
    }
}
Nach dem Login kopieren

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

Bei Verwendung müssen Sie nur das Containerobjekt übergeben

<?php
class container
{
    private $adapter;

    public function __construct(adapter $adapter)
    {
        $this->adapter = $adapter;
    }
}
Nach dem Login kopieren

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

(Empfohlenes Tutorial:

PHP-Video-Tutorial

)

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!

Verwandte Etiketten:
php
Quelle:jb51.net
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