Для получения параметров 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. Такой подход поможет вам избежать использования глобальных переменных и придает вашему коду большую чистоту и надежность.