Why is it called a Dependency Injection Container?
You may have noticed that I used Service Container and Dependency Injection Container interchangeably. Based on what we have seen so far, the term Service Container makes sense: we have a couple of services and there is a container that manages them. Right?
However, what does it mean when we say Dependency Injection Container? Who injects what in this definition?
Look at the constructor in the Mava.php
class again:
class Mava { private $em; public function __construct(EntityManager $em) { $this->em = $em; } // ... }
As you can see, we defined and initialized an EntityManager
variable in its constructor and, if you look at the arguments for mava_util
in services.yml
, you will notice that it is actually a doctrine service called entity_manager
:
mava_util: class: AppBundle\Util\Mava arguments: ['@doctrine.orm.entity_manager']
So basically, we have injected an entity_manager
dependency into our mava_util...