Maison >développement back-end >tutoriel php >Comprendre l'injection de dépendances DI en PHP dans un article
L'éditeur php Baicao vous fera découvrir l'injection de dépendances (DI) en PHP. L'injection de dépendances est un modèle de conception logicielle qui permet d'améliorer la flexibilité et la maintenabilité du code. Cet article présentera en détail le concept, le principe et l'application pratique de DI en PHP pour vous aider à mieux comprendre et appliquer la technologie d'injection de dépendances.
L'injection de dépendances DI signifie en fait que les dépendances sur les classes sont automatiquement injectées via le constructeur
En termes simples, cela signifie que vous exploitez actuellement une classe, mais que certaines méthodes ou fonctions de cette classe ne peuvent pas être complétées par cette classe seule, mais doivent être complétées avec l'aide d'une autre classe
Le signe le plus direct est lorsque les données du paramètre sont transmises en tant qu'objet. À proprement parler, si vous souhaitez faire fonctionner une classe dans une autre classe, il existe une interdépendance entre les deux classes. La méthode de transmission des paramètres s'appelle injection
.L'éditeur php Baicao vous fera découvrir l'injection de dépendances (DI) en PHP. L'injection de dépendances est un modèle de conception logicielle qui permet d'améliorer la flexibilité et la maintenabilité du code. Cet article présentera en détail le concept, le principe et l'application pratique de DI en PHP pour vous aider à mieux comprendre et appliquer la technologie d'injection de dépendances.
Lorsque l'injection de dépendances n'est pas utilisée, PHP Lorsque vous devez utiliser une classe dans une autre classe, vous effectuez souvent les opérations suivantes
Par exemple, si je dois utiliser la classe adapter dans la classe container, je dois l'instancier avant utilisation
Si un grand nombre de classes externes doivent être utilisées, cela entraînera un degré de couplage trop élevé, ce qui peut facilement entraîner des difficultés de maintenance ultérieures
En termes simples, cela signifie que le conteneur ne peut pas fonctionner sans classes externes. C'est ce qu'on appelle un couplage trop élevé
.<?php class container { private $adapter; public function __construct() { $this->adapter = new adapter(); } }
L'éditeur php Baicao vous fera découvrir l'injection de dépendances (DI) en PHP. L'injection de dépendances est un modèle de conception logicielle qui permet d'améliorer la flexibilité et la maintenabilité du code. Cet article présentera en détail le concept, le principe et l'application pratique de DI en PHP pour vous aider à mieux comprendre et appliquer la technologie d'injection de dépendances.
Le code ci-dessus est trop fortement couplé, ce qui conduit à l'émergence de l'injection de dépendances, principalement pour le découplage
Dans le cas suivant, il suffit de passer l'objet de classe qui doit être exploité
Les paramètres de l'opération d'injection de dépendances sont des objets au lieu de paramètres ordinaires. Avez-vous une meilleure compréhension
.Mais une injection de dépendance aussi simple entraînera si vous dépendez de beaucoup de classes, il faudra beaucoup de temps pour transmettre les paramètres et il sera facile de se tromper
<?php class container { private $adapter; public function __construct(adapter $adapter) { $this->adapter = $adapter; } }
L'éditeur php Baicao vous fera découvrir l'injection de dépendances (DI) en PHP. L'injection de dépendances est un modèle de conception logicielle qui permet d'améliorer la flexibilité et la maintenabilité du code. Cet article présentera en détail le concept, le principe et l'application pratique de DI en PHP pour vous aider à mieux comprendre et appliquer la technologie d'injection de dépendances.
Afin de résoudre le problème de confusion des paramètres ci-dessus, l'injection de dépendances a été optimisée pour le moment
Utilisez la méthode magique, __get pour définir l'objet
À l'heure actuelle, nous pouvons résoudre le problème du trop grand nombre de dépendances et des paramètres confus
<?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();
L'éditeur php Baicao vous fera découvrir l'injection de dépendances (DI) en PHP. L'injection de dépendances est un modèle de conception logicielle qui permet d'améliorer la flexibilité et la maintenabilité du code. Cet article présentera en détail le concept, le principe et l'application pratique de DI en PHP pour vous aider à mieux comprendre et appliquer la technologie d'injection de dépendances.
Nous définissons d'abord une classe container, qui sert principalement à injecter la classe que vous souhaitez exploiter dans le conteneur
Lors de son utilisation, il vous suffit de transmettre l'objet conteneur
<?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); //我是调度器
L'éditeur php Baicao vous fera découvrir l'injection de dépendances (DI) en PHP. L'injection de dépendances est un modèle de conception logicielle qui permet d'améliorer la flexibilité et la maintenabilité du code. Cet article présentera en détail le concept, le principe et l'application pratique de DI en PHP pour vous aider à mieux comprendre et appliquer la technologie d'injection de dépendances.
Dans l'application ci-dessus, nous injectons directement l'objet instancié dans le conteneur
Cela entraînera l'instanciation de tous les objets avant d'être utilisés, entraînant une consommation de ressources
Nous pouvons passer la fermeture, afin que l'objet ne soit pas instancié et injecté. Lorsque vous avez besoin de l'utiliser, instancier-le, ce qui peut réduire la consommation de serveurressources
.<?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!