Maison >développement back-end >tutoriel php >Explication détaillée de l'injection de dépendances en php

Explication détaillée de l'injection de dépendances en php

韦小宝
韦小宝original
2018-03-14 12:44:112742parcourir

Cet article parle de Injection de dépendances de PHP. Les étudiants qui ne connaissent pas grand-chose à l'injection de dépendances PHP mais qui sont intéressés devraient lire cet article. Plus de bêtises. Jetons un coup d'œil directement à l'injection de dépendances en PHP. !

Injection de dépendances

Compréhension :

  1. est une méthode qui nous permet de nous découpler des dépendances codées en dur afin que nous puissions les exécuter ou les compiler à au moment de l'exécution ou de la compilation Logiciel qui peut modifier les modèles de conception .

  2. En termes simples, l'injection de dépendances fournit des dépendances de composants via l'injection de constructeur, des appels de fonction ou des paramètres de propriété.

Inversion du contrôle

Compréhension :

  • Un système réalise une « inversion du contrôle » en séparant complètement le contrôle organisationnel et les objets . changement". Pour l'injection de dépendances, cela signifie réaliser le découplage en contrôlant ou en instanciant des objets dépendants ailleurs dans le système.

  • Par exemple, le framework MVC fournit généralement des super classes ou des classes Controller de base afin que d'autres contrôleurs puissent hériter des dépendances correspondantes

Remarque

  • Étant donné que l'héritage de la classe de base est facultatif, cette méthode peut supprimer complètement les dépendances et n'est pas une injection de dépendances

Inversion de dépendance

Comprenez :

  • Le principe d'inversion des dépendances est le "D" du principe de conception orienté objet S.O.L.I.D, préconise de « s'appuyer plutôt sur l'abstraction ». que le concret ». Pour faire simple, la dépendance doit être une interface/convention ou une classe abstraite, plutôt qu'une implémentation spécifique.

Exemple :

<?php
namespace Database;

class Database
{
    protected $adapter;

    public function __construct(AdapterInterface $adapter)
    {
        $this->adapter = $adapter;
    }
}

interface AdapterInterface {}

class MysqlAdapter implements AdapterInterface {}

Avantage :

  • Supposons que vous travailliez dans une équipe où un collègue est responsable de la conception adaptateurs . Dans le premier exemple, nous devons attendre que l'adaptateur soit conçu avant de tests unitaires. Maintenant que la dépendance est une interface/convention, nous pouvons facilement simuler les tests d'interface car nous savons que nos collègues implémenteront cet adaptateur basé sur la convention

  • Le code devient plus évolutif. Si nous décidons de migrer vers une autre base de données un an plus tard, il nous suffit d'écrire un adaptateur qui implémente l'interface correspondante et de l'injecter. Puisque l'adaptateur suit la convention de l'interface, nous n'avons pas besoin de refactorisation supplémentaire.

Recommandations associées :



Explication détaillée du processus d'injection de dépendances pour l'implémentation de la réflexion de classe PHP

Explication détaillée de la méthode d'injection automatique de dépendances en PHP basée sur le mécanisme de réflexion

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