Prinzip der Abhängigkeitsinjektion:
Abhängigkeitsinjektion ist eine Methode, die es uns ermöglicht, uns von hartcodierten Abhängigkeiten zu entkoppeln, sodass zur Laufzeit oder Software-Entwurfsmuster, die zur Kompilierzeit geändert werden können. Kurz gesagt, es ermöglicht uns, die zugehörige Klasse in der Klassenmethode bequemer aufzurufen.
Erklärung mit Beispielen:
Angenommen, es gibt eine Klasse wie diese:
class Test { public function index(Demo $demo,Apple $apple){ $demo->show(); $apple->fun(); } }
Wenn Sie die Indexmethode verwenden möchten, müssen wir dies tun :
$demo = new Demo(); $apple = new Apple(); $obj = new Test(); $obj->index($demo,$apple);
Ist es mühsam, die Indexmethode aufzurufen? Die obige Methode hat nur zwei Parameter. Wenn es mehr Parameter gibt, müssen wir mehr Objekte als Parameter instanziieren. Wenn wir „Abhängigkeitsinjektion“ einführen, sieht die aufrufende Methode wie folgt aus.
$obj = new dependencyInjection(); $obj->fun("Test","index");
In unserem Beispiel oben hängt die Indexmethode der Testklasse von den Klassen Demo und Apple ab.
„Abhängigkeitsinjektion“ besteht darin, die Klassen zu identifizieren, von denen alle Methoden „abhängen“, und sie dann als Parameterwerte in die Methode „injizieren“.
Die dependencyInjection-Klasse schließt diese Abhängigkeitsinjektionsaufgabe ab.
<?php /** * Created by PhpStorm. * User: zhezhao * Date: 2016/8/10 * Time: 19:18 */ class dependencyInjection { function fun($className,$action){ $reflectionMethod = new ReflectionMethod($className,$action); $parammeters = $reflectionMethod->getParameters(); $params = array(); foreach ($parammeters as $item) { preg_match('/> ([^ ]*)/',$item,$arr); $class = trim($arr[1]); $params[] = new $class(); } $instance = new $className(); $res = call_user_func_array([$instance,$action],$params); return $res; } }
Im MVC-Framework verwendet die Steuerung manchmal mehrere Modelle. Wenn wir Abhängigkeitsinjektion und automatisches Laden von Klassen verwenden, können wir dies wie folgt verwenden.
public function index(UserModel $userModel,MessageModel $messageModel){ $userList = $userModel->getAllUser(); $messageList = $messageModel->getAllMessage(); }
Empfohlenes Tutorial: PHP-Video-Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Abhängigkeitsinjektion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!