IOC est une idée de conception appelée « Inversion de contrôle ».
1. Niveau moins profond - analyse du nom
"Contrôle" fait référence au contrôle du cycle de vie des objets tel que la création, la maintenance et la destruction. Ce processus est généralement pris de manière proactive par notre programme Contrôlé. , comme utiliser le nouveau mot-clé pour créer un objet (création), conserver une référence pendant l'utilisation (maintenance) et demander au GC de recycler l'objet (détruire) une fois toutes les références perdues.
"Inversion" signifie que le contrôle du cycle de vie des objets tels que la création, la maintenance et la destruction passe du contrôle du programme au contrôle du conteneur IOC. Lorsqu'un objet est nécessaire, il peut être obtenu directement à partir du conteneur IOC. nom.
2. Un niveau plus profond - lorsqu'il s'agit de DI, l'injection de dépendances est une implémentation importante d'IOC
La création d'un objet implique souvent la création d'autres objets, tels que les variables membres d'un objet A Tenant une référence à un autre objet B, c'est une dépendance, A dépend de B. Puisque le mécanisme IOC est responsable de la création des objets, cette dépendance doit également être prise en charge par le conteneur IOC. La méthode responsable est DI - Dependency Injection, en écrivant des dépendances dans le fichier de configuration, puis lors de la création d'objets avec des dépendances, le conteneur IOC injecte les objets dépendants. Par exemple, lors de la création de A, il est détecté qu'il y a des dépendances, IOC Le. Le conteneur crée l'objet B dont A dépend et l'injecte dans A (assemblage, implémenté via le mécanisme de réflexion), puis renvoie A au demandeur d'objet pour terminer le travail.
3. Quelle est la signification du CIO ?
IOC n'implémente pas plus de fonctions, mais son existence nous permet d'obtenir les objets appropriés à partir du conteneur IOC sans nécessiter beaucoup de code ni prendre en compte des relations de couplage complexes entre les objets, et offre une fiabilité pour la gestion des objets, réduisant considérablement la complexité de. développement.
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!