Можно ли в Symfony инициализировать в конструкторе сервисы если их не используешь?

В Symfony можно инициализировать сервисы в конструкторе даже если они не используются.

Symfony предоставляет мощный контейнер зависимостей, который управляет созданием и внедрением зависимостей в приложение. Сервисы, определенные в контейнере, могут быть инициализированы и внедрены в другие сервисы или компоненты приложения.

Для инициализации сервисов в конструкторе класса, нам нужно сначала внедрить контейнер зависимостей в класс. Это можно сделать, например, с помощью типизированной зависимости в конструкторе класса. Затем, мы можем использовать контейнер для получения нужного сервиса при его инициализации в конструкторе.

Вот пример кода, который демонстрирует, как инициализировать неиспользуемый сервис в конструкторе Symfony:

use SymfonyComponentDependencyInjectionContainerInterface;

class MyService
{
    private $otherService;
    
    public function __construct(ContainerInterface $container)
    {
        $this->otherService = $container->get('other_service');
        // инициализация других переменных или сервисов
    }
    
    public function doSomething()
    {
        // использование сервиса $otherService
        $this->otherService->doSomethingElse();
    }
}

В этом примере MyService принимает ContainerInterface в качестве аргумента конструктора. Внутри конструктора мы можем использовать $container для получения доступа к сервису other_service, который мы не используем непосредственно в классе MyService.

Этот подход полезен, когда у нас есть сервисы или компоненты, которые могут быть использованы в будущем и для которых удобно сразу произвести инициализацию в конструкторе.

Однако, стоит помнить, что инициализация сервисов, которые не используются, может привести к излишней сложности кода и возможным проблемам с производительностью. Поэтому, рекомендуется рассматривать до начала разработки, нужна ли инициализация таких сервисов и имеет ли это смысл с точки зрения архитектуры и производительности приложения.