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. !
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 .
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é.
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
É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
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.
<?php namespace Database; class Database { protected $adapter; public function __construct(AdapterInterface $adapter) { $this->adapter = $adapter; } } interface AdapterInterface {} class MysqlAdapter implements AdapterInterface {}
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 :
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!