Maison  >  Article  >  développement back-end  >  Partage du résumé de l'injection de dépendance PHP

Partage du résumé de l'injection de dépendance PHP

WBOY
WBOYavant
2022-04-13 13:01:596613parcourir

Cet article vous apporte des connaissances pertinentes sur PHP, qui présente principalement les problèmes liés à l'injection de dépendances, notamment ce qu'est l'injection de dépendances, les raisons de l'injection de dépendances et l'application de l'injection de dépendances, etc. J'espère qu'il sera utile à tout le monde . aide.

Partage du résumé de l'injection de dépendance PHP

Étude recommandée : "Tutoriel vidéo PHP"

Comprenez l'injection de dépendances PHP dans cet article De nombreuses personnes entendront le terme injection de dépendances après avoir appris PHP pendant un certain temps, mais elles n'en ont que peu. compréhension. Dans mon cas, comprenez que l'injection de dépendances est en fait un modèle de conception de programmation PHP. Bien qu'elle ne soit pas classée comme un modèle de conception, l'existence de modèles de conception existe pour l'efficacité de la programmation, et bien sûr de l'injection de dépendances.

1. Qu'est-ce que l'injection de dépendances (DI)

  • L'injection de dépendances (DI) fait en fait référence à l'injection automatique de dépendances sur une classe via le constructeur
  • En termes simples, cela signifie que vous exploitez actuellement une classe , mais 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, vous souhaitez faire fonctionner une autre classe dans une autre classe. Il existe une interdépendance entre les deux classes. La méthode de transmission des paramètres est appelée injection. La raison de l'injection de dépendances est au début. Si j'utilise une autre classe dans une classe, cela fonctionnera comme suit
  • Par exemple, si je dois utiliser la classe adaptateur dans la classe conteneur, elle doit être instanciée avant utilisation

    S'il doit être utilisé Un grand nombre de ressources externes Les classes entraîneront un degré de couplage trop élevé, ce qui peut facilement entraîner des difficultés de maintenance ultérieures. En termes simples, le conteneur ne peut pas fonctionner sans classes externes. C'est ce qu'on appelle un degré de couplage trop élevé. Injection de dépendances simple

Le code ci-dessus est trop fortement couplé, ce qui conduit à l'émergence de l'injection de dépendances, principalement pour comprendre le couplage

Comme indiqué ci-dessous, il suffit de transmettre l'objet de classe qui doit être exploité.
  • Les paramètres de l'opération d'injection de dépendances sont des objets, pas des paramètres ordinaires. Avez-vous une meilleure compréhension ?
  • Mais une injection de dépendances aussi simple fera que si vous dépendez de plusieurs classes, cela vous prendra beaucoup de temps. passer les paramètres. Facile à confondre
  • <?php
    class container
    {
        private $adapter;
    
        public function __construct()
        {
            $this->adapter = new adapter();
        }
    }
  • 4. Injection de dépendances de haut niveau

Afin de résoudre le problème de confusion des paramètres ci-dessus, l'injection de dépendances a évolué à ce moment

Grâce à la méthode magique, __get sets l'objet
  • Si la magie vous intéresse Si vous ne savez pas grand chose sur la méthode, merci de vous référer à mon article précédent : Explication détaillée des méthodes magiques en php
  • À ce stade, nous pouvons résoudre le problème du trop grand nombre de dépendances et des paramètres déroutants
  • <?php
    class container
    {
        private $adapter;
    
        public function __construct(adapter $adapter)
        {
            $this->adapter = $adapter;
        }
    }
  • 5. Application de l'injection de dépendances

Définissons d'abord une classe conteneur, qui est principalement utilisée pour injecter les classes que vous souhaitez opérer dans le conteneur. Lors de son utilisation, il vous suffit de passer. l'objet conteneur. 6. Optimisation de haut niveau

  • est ci-dessus Dans l'application, nous injectons directement les objets instanciés dans le conteneur
  • Cela entraînera à nouveau l'instanciation de tous les objets avant qu'ils ne soient utilisés, entraînant une perte de ressources
  • Nous pouvons passer la fermeture, afin que l'objet Il ne soit pas injecté par instanciation. Lorsque vous aurez besoin de l'utiliser, vous pouvez l'instancier à nouveau
  • pour réduire la perte de ressources du serveur
<?php
class container
{
    public $instance = [];

    public function __set($name, $value)
    {
        $this->instance[$name] = $value;
    }
}

$container = new container();

$container->adapter = new adapter();

Apprentissage recommandé : "PHP. Tutoriel vidéo"

    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:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer