HOW TO SHOP

1 Login or create new account.
2 Review your order.
3 Payment & FREE shipment

If you still have problems, please let us know, by sending an email to support@website.com . Thank you!

SHOWROOM HOURS

Mon-Fri 9:00AM - 6:00AM
Sat - 9:00AM-5:00PM
Sundays by appointment only!
C'est quoi une Injection de dépendances?

Lorsque vous commencez à créer des applications Web complexes, il est important de structurer vos composants afin qu'ils restent indépendants et ainsi que votre architecture reste flexible  et facile maintenir à l'avenir.  

Dans la programmation orientée objet, il est inévitable qu'un objet ait besoin d'utiliser une instance d'un autre objet. Cela se produira probablement dans tous les endroits de votre projet. Par exemple, vous utilisez une base de données MySQL. Lorsque vous effectuez des appels vers la base de données, vous allez utiliser une instance de l'objet base de données. Mais que se passe-t-il si vous devez changer de base de données pour utiliser PostgreSQL à la place? L'Injection de dépendance est un patron de conception qui vous permet de "découpler" ces deux composants afin qu'ils restent indépendants. 

Un deuxième grand avantage de l'Injection de dépendance est quand il s'agit de tester.  L'injection de dépendance permet d'écrire un code claire et facile à tester.

Retour à l'exemple de notre base de données. Lorsque vous testez votre code, vous ne voulez probablement pas vous connecter à une base de données. La connexion à une base de données pendant le test peut ralentir le processus et nécessite de conserver les données de test alors que vous avez  besoin juste de tester les méthodes qui interagissent avec la base de données. En utilisant l'Injection de dépendance, vous pouvez remplacer l'objet de base de données par une ressource statique qui agit de la même façon que vous attendez. 

Ainsi, comme vous le voyez, l'injection de dépendance permet de garder vos composants indépendants, au début  l'idée semble compliquée, mais c'est vraiment très simple. Essentiellement, il se résume à passer un objet comme paramètre , plutôt que le créer  à l'intérieur d'une fonction. 

Un exemple d'Injection de dépendances 

Pour vous montrer comment l'Injection de dépendance fonctionne dans la vie réelle, voici un exemple de code. Comme d'habitude, ces exemples sont en PHP, mais j'espère qu'il devrait être assez facile de le traduire dans n'importe quelle language. 

Ce qu'il ne faut pas faire 

Imaginez que nous avons cette classe suivante: 

1 class Database {

2    public function __construct( $dsn, $user, $password ){ 

3        // Make a connection to the database 

4    } 

9 } 

Et nous avons une classe User qui crée un nouveau utilisateur: 

1 class User { 

2     private $name; 

3     private $age; 

4     private $website; 

5     private $db; 

6  

7     public function __construct(  $name, $age, $website ){ 

8      $this->name = $name; 

9      $this->age = $age; 

10    $this->website = $website; 

11    // Instantiate database 

12    $this->db = new Database("mysql:host=localhost;dbname=database",  "username", "password"  ); 

13    } 

14 } 

Ce code est mauvais pour 3 raisons principales. 
 
     Préoccupation multiples 
     Une classe ne devrait jamais avoir qu'une préoccupation. Dans notre classe User, nous devons gerer la base de données alors qu'elle n'a vraiment rien à voir avec l'utilisateur. 
     Faire des changements est difficile 
     Imaginez si vous devez modifier le type de base de données ou le nom d'utilisateur ou le mot de passe dans tous les endroits où vous utilisez cette connexion à la base de données. Avoir vos classe couplés de cette manière rendra la maintenance de code dans le futur complexe. 
     Le test unitaire sont difficile a realiser 
     Les tests unitaires sont également beaucoup plus difficiles car maintenant nous devons traiter la base de données. Comme je l'ai mentionné ci-dessus, lors des tests, vous voulez seulement tester une chose spécifique. La classe Database crée dans la classe User, cela signifie que nous ne pouvons pas l'étendre pour des test. 

La façon correcte d'utiliser l'Injection de dépendance 

J'espère que l'exemple ci-dessus montre les inconvénient de ne pas utiliser l'Injection de dépendance. 
Pour réfactoriser cet exemple pour utiliser l'Injection de dépendances, il suffit de passer l'objet base de données au constructeur de la classe User: 

1 class User { 

2  private $name; 

3  private $age; 

4  private $website; 

5  private $db 

6  public function __construct(  $name,  $age, $website,  Database $database ){ 

7   $this->name = $name; 

8      $this->age = $age; 

9    $this->website = $website; 

10    $this->db = $database; 

11   } 

12 } 

Maintenant que nous passons une instance de la base de données à la classe User par le biais du constructeur, nous avons résolu les trois problèmes que nous avions auparavant. 
 
    Préoccupation unique 
    La classe User n'est désormais concernée que par l'Utilisateur car il ne doit plus se soucier de la base de données. 
    Plus de répétition 
    Maintenant que nous avons coupé tout le code en double, il est maintenant beaucoup plus facile de modifier les paramètres de la base de données car nous ne devons le faire qu'une seule fois. La classe User n'a jamais besoin de se soucier des modifications apportées à la base de données. 
    Plus facile à tester 
    Maintenant que la classe User reçoit simplement une instance de la base de données, elle rend cela beaucoup plus facile à tester.
 
 

 

 

 

SIGN IN YOUR ACCOUNT TO HAVE ACCESS TO DIFFERENT FEATURES

CREATE ACCOUNT

FORGOT YOUR DETAILS?

TOP