recherche
MaisonBibliothèques PHPAutres bibliothèquesBibliothèque PHP pour les conteneurs d'injection de dépendances
Bibliothèque PHP pour les conteneurs d'injection de dépendances
<?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.


Clause de non-responsabilité

Toutes les ressources de ce site proviennent d'internautes ou sont réimprimées par les principaux sites de téléchargement. Veuillez vérifier vous-même l'intégrité du logiciel ! Toutes les ressources de ce site sont uniquement à titre de référence d'apprentissage. Merci de ne pas les utiliser à des fins commerciales. Sinon, vous serez responsable de toutes les conséquences ! En cas d'infraction, veuillez nous contacter pour la supprimer. Coordonnées : admin@php.cn

Article connexe

Comprendre la série de conteneurs d'injection de dépendances PHP (3) SymfonyComprendre la série de conteneurs d'injection de dépendances PHP (3) Symfony

28Dec2016

Jusqu'à présent, nous avons parlé de quelques concepts de base. Les exemples des deux premiers articles nous sont très utiles pour comprendre l'implémentation de l'injection de dépendances. Nous allons maintenant nous plonger dans l'implémentation du conteneur de services Symfony 2.

Comprendre la série de conteneurs d'injection de dépendances PHP (1) Qu'est-ce queComprendre la série de conteneurs d'injection de dépendances PHP (1) Qu'est-ce que

28Dec2016

Cet article est le premier chapitre de la série sur l'implémentation des conteneurs d'injection de dépendances PHP.

Comparez les différences entre les conteneurs Spring et les conteneurs IOC et améliorez le mécanisme d'injection de dépendances du projetComparez les différences entre les conteneurs Spring et les conteneurs IOC et améliorez le mécanisme d'injection de dépendances du projet

30Dec2023

Titre : La différence entre le conteneur Spring et le conteneur IOC et l'optimisation du mécanisme d'injection des dépendances du projet Introduction Le framework Spring est l'un des frameworks très importants dans le développement Java. Il gère et organise les dépendances entre les objets via le conteneur IOC (InverseofControl). Cet article analysera les différences entre les conteneurs Spring et les conteneurs IOC et fournira des exemples de code spécifiques pour optimiser le mécanisme d'injection de dépendances du projet. La différence entre le conteneur Spring et le conteneur IOC Le conteneur Spring est une implémentation

Comment Composer simplifie-t-il l’installation et les dépendances de la bibliothèque PHP ?Comment Composer simplifie-t-il l’installation et les dépendances de la bibliothèque PHP ?

05Jun2024

Question : Comment Composer simplifie-t-il l'installation de la bibliothèque PHP et la gestion des dépendances ? Réponse : Installez et mettez à jour les bibliothèques PHP. Gérer les dépendances de la bibliothèque. Générez des chargeurs automatiques pour simplifier l'utilisation de la bibliothèque.

Développement PHP : utiliser Composer pour résoudre les problèmes de gestion des dépendancesDéveloppement PHP : utiliser Composer pour résoudre les problèmes de gestion des dépendances

15Jun2023

Dans le processus de développement PHP, nous devons souvent utiliser de nombreuses bibliothèques tierces pour simplifier notre travail de développement. Par exemple, nous devrons peut-être utiliser diverses bibliothèques tierces pour implémenter des fonctions telles que la pagination, la validation de formulaires et le traitement d'images. Cependant, à mesure que le nombre de bibliothèques dépendantes augmente, nous sommes également confrontés à des problèmes de gestion des dépendances. Comment installer et mettre à niveau ces bibliothèques dépendantes ? Comment s’assurer qu’il n’y aura pas de conflits entre les différents projets ? Comment gérer et maintenir facilement ces bibliothèques dépendantes ? Ce problème est un vrai casse-tête pour les développeurs PHP. Il existe cependant un outil

Comprendre la série de conteneurs d'injection de dépendances PHP (2) Ce dont vous avez besoinComprendre la série de conteneurs d'injection de dépendances PHP (2) Ce dont vous avez besoin

28Dec2016

Dans l'article précédent, nous avons utilisé un cas Web spécifique pour illustrer l'injection de dépendances. Aujourd'hui, nous allons parler du conteneur d'injection de dépendances (Container). Commençons par une déclaration importante :

See all articles