Как получить параметры Symfony приложения внутри сервиса?

Для получения параметров Symfony приложения внутри сервиса можно воспользоваться Dependency Injection. Symfony предоставляет возможность внедрять параметры в сервисы при их конфигурации. Вот как это можно сделать:

1. Определите параметр в файле конфигурации вашего приложения, например, в файле config/services.yaml:

parameters:
    app.some_parameter: '%env(SOME_PARAMETER)%'

2. Затем создайте сервис и внедрите этот параметр в него:

// src/Service/SomeService.php

namespace AppService;

use SymfonyComponentDependencyInjectionParameterBagParameterBagInterface;

class SomeService
{
    private $someParameter;

    public function __construct(ParameterBagInterface $parameterBag)
    {
        $this->someParameter = $parameterBag->get('app.some_parameter');
    }

    public function getSomeParameter()
    {
        return $this->someParameter;
    }
}

3. Теперь зарегистрируйте сервис в вашем приложении, также в файле config/services.yaml:

services:
    AppServiceSomeService:
        arguments:
            $parameterBag: '@service_container'

Теперь у вас есть сервис SomeService, который получает параметр приложения app.some_parameter через Dependency Injection. Когда этот сервис будет использоваться в других частях вашего приложения, он будет иметь доступ к этому параметру.

Если параметр необходимо получить напрямую в контроллере, его можно внедрить точно таким же образом через Dependency Injection. Такой подход поможет вам избежать использования глобальных переменных и придает вашему коду большую чистоту и надежность.