Maison  >  Article  >  cadre php  >  Inversion de contrôle et injection de dépendances dans le conteneur ThinkPHP

Inversion de contrôle et injection de dépendances dans le conteneur ThinkPHP

咔咔
咔咔original
2020-10-10 11:27:492063parcourir

Le nom Inversion de contrôle par injection de dépendance semble déroutant Après avoir lu cet article, vous saurez de quoi il s'agit.

3. Comment comprendre l'inversion de contrôle et l'injection de dépendances

En fait, ces deux-là font référence Une chose n'est qu'une idée de programmation, ne pensez pas que ce soit si difficile à comprendre et si noble.

Alors, qu'est-ce qu'un conteneur ? Pour le comprendre directement, un conteneur est une chose qui contient des choses. En programmation, nos variables communes et propriétés d'objet sont toutes des conteneurs. Ce qui peut contenir un conteneur dépend entièrement de la définition du conteneur.

Cependant, nous discutons maintenant d'un autre type de conteneur. Il ne stocke ni texte ni valeurs, mais des objets, des classes et des interfaces. Grâce à ce type de conteneur, de nombreuses fonctions avancées peuvent être réalisées. celui utilisé est le découplage et l’injection de dépendances.

Alors pourquoi y a-t-il deux concepts, pourquoi parle-t-on d'inversion de contrôle et d'injection de dépendances ! Comme mentionné ci-dessus, ils font en réalité référence à la même chose, mais ils sont décrits sous des angles différents.

Tout comme vous êtes le fils de votre père, vous êtes toujours le petit-fils de votre grand-père. Fils et petit-fils font référence à la même personne. Il s’agit simplement d’examiner le problème sous un angle différent.

L'inversion de contrôle

consiste à examiner le problème du point de vue du conteneur. Le conteneur contrôle l'application, et le conteneur injecte à l'envers les informations externes que le conteneur contient. besoins de l'application dans la ressource de l'application.

Injection de dépendances

Regardez le problème du point de vue de l'application. L'application s'appuie sur le conteneur pour créer et injecter les ressources externes dont elle a besoin. La

Fonction

est principalement utilisée pour réduire le couplage entre les codes.

Séparez efficacement les objets et les ressources externes nécessaires à l'application.

Les deux images suivantes peuvent illustrer clairement le problème

Inversion de contrôle et injection de dépendances dans le conteneur ThinkPHPInversion de contrôle et injection de dépendances dans le conteneur ThinkPHP

Donnez-vous un cas simple

Définissez deux classes comme Person et Car, instanciez-les dans Person et appelez la méthode de paiement dans Car.

Inversion de contrôle et injection de dépendances dans le conteneur ThinkPHP Ensuite, appelez-le dans le contrôleur, et le résultat imprimé doit être le 123 renvoyé par Car, donc celui-ci ne sera pas imprimé.

Inversion de contrôle et injection de dépendances dans le conteneur ThinkPHP
Insérer la description de l'image ici

À ce stade, nous modifions le code et passons la classe Car directement à la classe Person et l'utilisons directement dans la classe Person L'objet passé appelle la méthode correspondante.

Inversion de contrôle et injection de dépendances dans le conteneur ThinkPHPIl ne s'agit que d'un simple processus d'implémentation. Afin d'ouvrir la voie à la lecture du code du conteneur du framework, l'injection du conteneur dans le framework sera expliquée en détail plus tard.

La persévérance dans l'apprentissage, la persévérance dans les blogs et la persévérance dans le partage sont les convictions auxquelles Kaka a toujours adhéré depuis ses débuts. J'espère que les articles de Kaka sur le grand Internet pourront vous apporter un peu d'aide. Je m'appelle Kaka, à la prochaine fois.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn