Maison >développement back-end >tutoriel php >En savoir plus sur l'injection de dépendances en PHP et voir comment l'appliquer
Qu'est-ce que l'injection de dépendances ? Cet article vous guidera à travers l'injection de dépendances en PHP, vous présentera les raisons de l'injection de dépendances et ses applications. J'espère qu'il vous sera utile !
1. Qu'est-ce que l'injection de dépendances (DI)
Si nécessaire Pour un grand nombre de classes externes , cela entraînera un degré de couplage trop élevé, ce qui peut facilement entraîner des difficultés de maintenance ultérieuresEn termes simples, cela signifie que le conteneur ne peut pas fonctionner sans classes externes, ce qu'on appelle un degré de couplage trop élevé
<?php class container { private $adapter; public function __construct() { $this->adapter = new adapter(); } }
Les paramètres de l'opération d'injection de dépendances sont des objets, pas des paramètres ordinaires. Avez-vous une meilleure compréhensionMais une injection de dépendances aussi simple fera que si vous dépendez de beaucoup de classes, vous serez très long et facile à confondre
<?php class container { private $adapter; public function __construct(adapter $adapter) { $this->adapter = $adapter; } }4. Injection de dépendances de haut niveau
<?php class container { public $instance = []; public function __set($name, $value) { $this->instance[$name] = $value; } } $container = new container(); $container->adapter = new adapter();
<?php class container { public $instance = []; public function __set($name, $value) { $this->instance[$name] = $value; } } class adapter { public $name = '我是调度器'; } $container = new container(); $container->adapter = new adapter(); class autofelix { private $container; public function __construct(container $container) { $this->container = $container; } public function who($class) { return $this->container->instance[$class]->name; } } $autofelix = new autofelix($container); $who = $autofelix->who('adapter'); var_dump($who); //我是调度器6. Optimisation avancée
Nous pouvons passer des fermetures afin que les objets ne soient pas instanciés et injectés. Lorsque vous devez l'utiliser vous-même, l'instanciation peut. réduire la perte de ressources du serveur
<?php $container = new container(); $container->adapter = new adapter(); //高阶优化 $container = new container(); $container->adapter = function () { return new adapter(); };
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!