localisation actuelle: Maison > site de téléchargement > Téléchargement de la bibliothèque > Autres bibliothèques > Bibliothèque PHP pour les conteneurs d'injection de dépendances
Bibliothèque PHP pour les conteneurs d'injection de dépendances
Classer: Téléchargement de la bibliothèque / Autres bibliothèques | Temps de libération: 2018-01-26 | visites: 25028 |
Télécharger: 374 |
Derniers téléchargements
Aquarium Fantastique
Filles en première ligne
Ailes d'étoiles
Petite Fée des Fleurs Paradis Féérique
Restaurant Histoire mignonne
Exploration de voyage à Shanhe
Amour et producteur
Le cerveau le plus puissant 3
Odd Dust : Damila
Jeune voyage vers l'Ouest 2
24 heuresClassement de lecture
- 1 Pourquoi l'utilisation de `mysqli_fetch_array()` plusieurs fois provoque-t-elle des problèmes avec les ensembles de résultats ?
- 2 dialerres.dll – Qu'est-ce que dialerres.dll ?
- 3 dlcjdr5c.dll – Qu'est-ce que dlcjdr5c.dll ?
- 4 Présentation de la date de sortie du projet WAND
- 5 Pourquoi est-ce que j'obtiens « Point-virgule inattendu ou nouvelle ligne avant le reste » dans Go ?
- 6 dlcres0804.dll – Qu'est-ce que dlcres0804.dll ?
- 7 Comment détecter les objets verts dans les images avec OpenCV : un guide étape par étape utilisant l'espace colorimétrique HSV ?
- 8 Comment puis-je détecter et gérer l’orientation de la fenêtre pour un affichage optimal des pages sur les appareils mobiles ?
- 9 Quels sont les systèmes de build compatibles avec le langage de programmation Go ?
- 10 Ouvrir ou fermer : quand devez-vous gérer votre connexion à la base de données ?
- 11 dlbkdr5c.dll – Qu'est-ce que dlbkdr5c.dll ?
- 12 Comment créer des procédures stockées dans phpMyAdmin sans changer le délimiteur ?
- 13 Pourquoi est-ce que j'obtiens une erreur de conversion d'interface lors de l'analyse de la réponse de l'API Serpwow ?
- 14 djpeta.exe – Qu’est-ce que djpeta.exe ?
- 15 Puis-je supprimer la sortie générée par « System.out.println() » en Java ?
Derniers tutoriels
-
- Aller au langage pratique GraphQL
- 1946 2024-04-19
-
- Premiers pas avec MySQL (Professeur Mosh)
- 1765 2024-04-07
-
- Mock.js | Axios.js | Json | Dix jours de cours de qualité
- 2581 2024-03-29
<?php namespace Auryn; class CachingReflector implements Reflector { const CACHE_KEY_CLASSES = 'auryn.refls.classes.'; const CACHE_KEY_CTORS = 'auryn.refls.ctors.'; const CACHE_KEY_CTOR_PARAMS = 'auryn.refls.ctor-params.'; const CACHE_KEY_FUNCS = 'auryn.refls.funcs.'; const CACHE_KEY_METHODS = 'auryn.refls.methods.'; private $reflector; private $cache; public function __construct(Reflector $reflector = null, ReflectionCache $cache = null) { $this->reflector = $reflector ?: new StandardReflector; $this->cache = $cache ?: new ReflectionCacheArray; } public function getClass($class) { $cacheKey = self::CACHE_KEY_CLASSES . strtolower($class); if (!$reflectionClass = $this->cache->fetch($cacheKey)) { $reflectionClass = new \ReflectionClass($class); $this->cache->store($cacheKey, $reflectionClass); } return $reflectionClass; }
Notre idée est que lorsque l'application utilise une classe Foo, elle créera la classe Foo et appellera la méthode de la classe Foo. Si cette méthode nécessite une classe Bar, elle créera la classe Bar et appellera la méthode de la classe Bar, et cette méthode Si une classe Bim est nécessaire, la classe Bim sera créée puis d'autres travaux seront effectués. L'idée d'utiliser l'injection de dépendances est que l'application utilise la classe Foo, la classe Foo a besoin de la classe Bar et la classe Bar a besoin de la classe Bim, puis créez d'abord la classe Bim, puis créez la classe Bar et injectez Bim, puis créez la classe Foo et injectez la classe Bar, puis appelez la méthode Foo, Foo appelle la méthode Bar, puis effectuez d'autres travaux. Il s’agit du modèle d’incrackée de contrôle. Le contrôle des dépendances est inversé jusqu'au début de la chaîne d'appel. De cette façon, vous avez un contrôle total sur les dépendances et contrôlez le comportement de votre programme en ajustant les différents objets injectés. Par exemple, la classe Foo utilise Memcache et vous pouvez utiliser redis à la place sans modifier le code de la classe Foo.
L'idée après avoir utilisé un conteneur d'injection de dépendances est que si l'application a besoin d'accéder à la classe Foo, elle récupère la classe Foo du conteneur, le conteneur crée la classe Bim, puis crée la classe Bar et injecte Bim, puis crée le Foo et y injecte Bar, puis applique le programme appelle la méthode Foo, Foo appelle la méthode Bar, puis effectue d'autres travaux. En bref, le conteneur est responsable de l'instanciation, de l'injection des dépendances, du traitement des dépendances, etc.