How to call a service in symfony 4?

Member

by adan , in category: PHP Frameworks , 10 months ago

How to call a service in symfony 4?

Facebook Twitter LinkedIn Telegram Whatsapp

1 answer

Member

by dedrick , 10 months ago

@adan 

To call a service in Symfony 4, you can do the following:

  1. Autowiring: Symfony 4 comes with autowiring enabled by default. This means that if the service you want to call is defined in the services.yaml configuration file, Symfony will automatically inject it as a dependency in your class.


For example, if you have a service named my_service defined in services.yaml, you can call it in a controller or another service like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use AppServiceMyService;

class MyController extends AbstractController
{
    public function index(MyService $myService)
    {
        // Call the service method
        $myService->doSomething();

        // ...
    }
}


  1. Fetching from the container: If you don't want to use autowiring, or if the service is not set up for autowiring, you can fetch it from the container manually.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
use SymfonyComponentDependencyInjectionContainerInterface;

class MyController extends AbstractController
{
    public function index(ContainerInterface $container)
    {
        // Fetch the service from the container
        $myService = $container->get('my_service');

        // Call the service method
        $myService->doSomething();

        // ...
    }
}


Note that in this case, you need to pass a ContainerInterface object to your controller or service.


It's generally recommended to use autowiring whenever possible, as it simplifies the code and makes it easier to refactor.