Heim  >  Artikel  >  Backend-Entwicklung  >  yii2 Essay (7) Abhängigkeitsinjektion – (2) Einfache Implementierung der PHP-Abhängigkeitsinjektion

yii2 Essay (7) Abhängigkeitsinjektion – (2) Einfache Implementierung der PHP-Abhängigkeitsinjektion

黄舟
黄舟Original
2017-01-17 10:33:491270Durchsuche

Wir kannten das Problem schon früher. Wie löst PHP dieses Problem? Da es sich um yii2 handelt, verwenden wir yii2, um es kurz vorzustellen. Ich habe den Kerncode von yii2 integriert, um den Prozess der Abhängigkeitsinjektion in PHP zu erklären.

Studenten, die die yii2-Entwicklung verwendet haben, sind mit Yii::createObject vertraut. Es ist ein „Eintrag“ für die Abhängigkeitsinjektion.

//$p 可以想象的yii2的配置文件,如$p = ['class'=>'sdk/Test', 'file'=>'xxxx'];
// 'class' 是将要实现的类,‘file’是将要实现的对象的属性
function createObject($p){
    $class = $p['class'];
    unset($p['class']);
    $obj = new $class;//require 使用的是 autoload 实现的
    foreach($p as $f => $v){
        $class->$f = $v;    
    }

    return $obj;

Natürlich yii2s createObject ist weit mehr als das. Ich habe es einfach nur geschrieben, um eine Möglichkeit für PHP zu veranschaulichen, „Abhängigkeitsinjektion“ zu implementieren. Natürlich ist es sehr einfach (es verfügt nicht über die grundlegendste fehlertolerante Funktion, und es verfügt nicht über alle Funktionen der Abhängigkeitsinjektion, wie z. B. Parameterverwaltung, kompatible Schließungen usw., diese werden deutlich, wenn wir uns die yii2-DI-Implementierung tatsächlich ansehen.

Das Obige ist der Inhalt von yii2 Essay (7) Abhängigkeitsinjektion – (2) Einfache Implementierung der PHP-Abhängigkeitsinjektion Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). !


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