user275157
user275157

Reputation: 1352

avoiding container strings in dependency injection in symfony

New to symfony and php. I was able to successfully define a service and inject the doctrine entity manager into it. It works fine but during the initialization I have to pass a string that contains the service name as follows:

    $eRep = $this->container->get('employee_repository');

Can this be avoided? Can this be converted to something more elegant like

   $eRep = $this->container->getEmployeeRepository();

The service is defined as:

services:
employee_repository:
    class: AppBundle\Repository\EmployeeRepository
    arguments: [@doctrine.orm.entity_manager]               

Apologies for the noob question. EDIT

Can I get access to a service container inside another class say EmployeeEnvelope and call as follows:

class EmployeeEnvelope{

    public function getEmployeeRepository()
    {               
        return $this->container->get('employee_repository');
    } 
}

Upvotes: 3

Views: 307

Answers (1)

Mic Jaw
Mic Jaw

Reputation: 366

If you're requesting the service from a controller, you can setup your controller to be a service too. Then you can pass the employee repository service to it using dependency injection.

That way you will not have the string reference in the controller, but in the configuration.

http://symfony.com/doc/current/cookbook/controller/service.html

Upvotes: 2

Related Questions