To implement a loosely coupled architecture in order to get better testable, maintainable and extendable code.
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.
- 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 theConnection
object - many frameworks already have containers for DI that create objects via a configuration array and inject them where needed (i.e. in Controllers)
You can also find this code on GitHub
DatabaseConfiguration.php
DatabaseConfiguration.php
DatabaseConnection.php
DatabaseConnection.php
Tests/DependencyInjectionTest.php
Tests/DependencyInjectionTest.php