Skip to content

Latest commit

 

History

History

DependencyInjection

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Purpose

To implement a loosely coupled architecture in order to get better testable, maintainable and extendable code.

Usage

DatabaseConfiguration gets injected and DatabaseConnection will get all that it needs from $config. Without DI, the configuration would be created directly in DatabaseConnection, which is not very good for testing and extending it.

Examples

  • The Doctrine2 ORM uses dependency injection e.g. for configuration that is injected into a Connection object. For testing purposes, one can easily create a mock object of the configuration and inject that into the Connection object
  • many frameworks already have containers for DI that create objects via a configuration array and inject them where needed (i.e. in Controllers)

UML Diagram

Alt DependencyInjection UML Diagram

Code

You can also find this code on GitHub

DatabaseConfiguration.php

DatabaseConfiguration.php

DatabaseConnection.php

DatabaseConnection.php

Test

Tests/DependencyInjectionTest.php

Tests/DependencyInjectionTest.php