Для скрещивания "symfony/dependency-injection" с переменными окружения в Symfony, вам потребуется настроить контейнер зависимостей для внедрения этих переменных окружения в ваши сервисы или параметры.
Следующие шаги позволят вам использовать переменные окружения с помощью "symfony/dependencey-injection":
1. Добавьте зависимость "symfony/dependencey-injection" в ваш файл composer.json командой:
composer require symfony/dependency-injection
2. Создайте класс (например, AppParameters), который будет ответственным за загрузку переменных окружения:
<?php namespace App; use SymfonyComponentDependencyInjectionParameterBagParameterBagInterface; class AppParameters { private $params; public function __construct(ParameterBagInterface $params) { $this->params = $params; } public function get(string $name) { return $this->params->get($name); } }
3. Создайте файл config/services.yaml (если его еще нет), где вы определите соответствующий сервис для загрузки переменных окружения:
services: AppAppParameters: arguments: $params: '%env(ENV_VARIABLE)%'
Поменяйте ENV_VARIABLE на имя желаемой переменной окружения, которую вы хотите использовать.
4. Теперь вы можете внедрить класс AppParameters в любой из ваших сервисов. Например, если у вас есть сервис AppLogger, который нуждается в доступе к переменной окружения:
<?php namespace App; use PsrLogLoggerInterface; class AppLogger { private $logger; private $appParams; public function __construct(LoggerInterface $logger, AppParameters $appParams) { $this->logger = $logger; $this->appParams = $appParams; } public function logSomething() { $envVariable = $this->appParams->get('ENV_VARIABLE'); $this->logger->info('Value of ENV_VARIABLE: '.$envVariable); } }
Теперь, при вызове метода logSomething в вашем сервисе AppLogger, переменная окружения будет доступна через $this->appParams->get('ENV_VARIABLE'). Вы также можете использовать переменные окружения в качестве параметров в services.yaml, валидаторах, контроллерах и в других местах вашего приложения, где используется контейнер зависимостей.