Maison >développement back-end >tutoriel php >Qu'est-ce que l'injection de dépendances ?

Qu'est-ce que l'injection de dépendances ?

一个新手
一个新手original
2017-10-25 13:16:573743parcourir

Inversion de dépendance (DIP) : DIP est une idée de conception. Dans la conception de logiciels traditionnels, le code de la couche supérieure dépend de la couche inférieure. Lorsque le code de la couche inférieure change, le code de la couche supérieure change également. Le code n'est pas facile. à maintenir et conception DIP L'idée nécessite de définir l'interface de la couche supérieure et la couche inférieure implémentant cette interface, réduisant ainsi le degré de couplage.

Inversion de contrôle (IOC) : IOC est une idée spécifique de​​DIP, qui laisse la couche inférieure dont dépend la couche supérieure être mise en œuvre par un tiers. En d'autres termes, il s'agit de l'initiative d'obtenir la ressource externe C requise dans la catégorie A. Cette situation est mise en avant. Alors, qu’est-ce que l’inverse ? Autrement dit, la classe A n'obtient plus activement C, mais attend passivement que le conteneur IoC/DI obtienne une instance de C, puis l'injecte dans la classe A à l'envers.

Injection de dépendance (DI) : DI est un modèle de conception d'IOC qui déplace l'instanciation d'une classe qui dépend d'une autre classe vers l'implémentation externe de la classe.

L'injection de dépendances est implémentée :

1. Définir une interface ou une classe abstraite (c'est un exemple d'envoi d'emails)


interface Mail{    public function send();
}

2. Différents types d'envoi mettent en œuvre cette interface


class Email implements Mail()
{    public function send()
    {        //发送Email    }
}


class  SmsMail implements Mail()
{    public function send()
    {        //发送短信    }
}

3.


   __construct( ->_mailObj =  
        ->_mailObj->send();


<span style="color: #008000"><br/>$reg = new Register();<br/>$emailObj = new Email();<br/>$smsObj = new SmsMail();<br/><br/>$reg->doRegister($emailObj);//使用email发送<br/>$reg->doRegister($smsObj);//使用短信发送<br/></span>

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