Rapide Symfony Démarrer DI (Dependency Injection) Tutoriel
Quel est Dependency Injection (DI)?
L'injection de dépendance est une technique qui permet pour les objets faiblement couplés au sein d'une application logicielle. Généralement, si un objet nécessite l'accès à la fonctionnalité d'un autre, il serait instancié interne conduisant à des systèmes fortement couplés. En mettant en œuvre l'injection de dépendance que nous injectons les objets requis prêt à l'emploi (parfois aussi appelée inversion de contrôle - CIO). Prenons l'exemple suivant:
<? Php Classe DecisionMaker { makeDecision fonction publique (array $ paramètres) { / / Besoin de l'adaptateur de bases de données $ Dp = new DecisionParameters (); $ ParameterScore = $ dp-> getScore ($ paramètres); / * ... Certains logique de décision plus ... * / return ($ parameterScore> 50); } }
Ce morceau de code est dit être étroitement couplée à l'objet DecisionParameters. La réécriture du haut d'une manière faiblement couplée, nous aurions quelque chose comme ....
<? Php Classe DecisionMaker { private $ _DP; public function __construct ($ dp) { $ This-> _DP = $ dp; } makeDecision fonction publique (array $ paramètres) { $ ParameterScore = $ this-> _DP-> getScore ($ paramètres); / * ... Certains logique de décision plus ... * / return ($ parameterScore> 50); } }
Alors que l'acquisition des avantages du code à couplage lâche, nous ajoutons une telle complexité que chaque fois qu'un objet est instancié nous avons aussi d'instancier ses dépendances et de passer ces trop. Par exemple, ceci:
$ Choix = DecisionMaker nouvelle (); echo $ choix-> makeDecision (array ('efforts' => 'faible', 'retour' => 'haute'));
devient alors:
$ Dp = new DecisionParameters (); $ Choix = new DecisionMaker ($ dp); echo $ choix-> makeDecision (array ('efforts' => 'faible', 'retour' => 'haute'));
Cette situation devient plus pénible que le nombre de dépendances pour une classe est augmentée, et ce si les dépendances eux-mêmes ont des dépendances? Cela peut très vite devenir un cauchemar administration des objets! Entrez conteneurs injection de dépendance (ou cadres) ...
Continue reading 'rapide Symfony Démarrer DI (Dependency Injection) Tutorial "»
















































