Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Einführung in die Abhängigkeitsinjektion in PHP

Detaillierte Einführung in die Abhängigkeitsinjektion in PHP

王林
Freigeben: 2023-04-07 18:58:01
Original
2349 Leute haben es durchsucht

Detaillierte Einführung in die Abhängigkeitsinjektion in PHP

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

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

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

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(&#39;/> ([^ ]*)/&#39;,$item,$arr);
   $class = trim($arr[1]);
   $params[] = new $class();
  }
  $instance = new $className();
  $res = call_user_func_array([$instance,$action],$params);
  return $res;
 }
}
Nach dem Login kopieren

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

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!

Verwandte Etiketten:
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