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 ?

一个新手
Libérer: 2023-03-16 18:58:01
original
3713 Les gens l'ont consulté

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();
}
Copier après la connexion

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


class Email implements Mail()
{    public function send()
    {        //发送Email    }
}
Copier après la connexion


class  SmsMail implements Mail()
{    public function send()
    {        //发送短信    }
}
Copier après la connexion

3.


   __construct( ->_mailObj =  
        ->_mailObj->send();
Copier après la connexion


<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>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal