In Symfony2, warum ist es eine schlechte Idee ist, injizieren Sie die service-container, sondern als einzelne Dienstleistungen an?

Ich kann nicht finden die Antwort auf diese...

Wenn ich injizieren der service-container, wie:

//config.yml
my_listener:
   class: MyListener
   arguments: [@service_container]

my_service:
   class: MyService

//MyListener.php
class MyListener
{
    protected $container;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }

    public function myFunction()
    {
        $my_service = $this->container->get('my_service');
        $my_service->doSomething();
    }
}

dann funktioniert es genauso gut, wie wenn ich tun:

//config.yml
my_listener:
   class: MyListener
   arguments: [@my_service]

my_service:
   class: MyService

//MyListener.php    
class MyListener
{
    protected $my_service;

    public function __construct(MyService $my_service)
    {
        $this->my_service = $my_service;
    }

    public function myFunction()
    {
        $this->my_service->doSomething();
    }
}

Also warum sollte ich nicht einfach injizieren der service-container, und erhalten Sie die Dienstleistungen aus, die in meine Klasse?

Schreibe einen Kommentar