Что такое параметры в Symfony
При работе с Symfony проектом мы можем использовать так называемые параметры.
Параметры - это переменные, которые хранятся в контейнере и мы можем получать доступ к ним из контроллера и сервисов. Это что-то вроде глобальной переменной, которую мы можем использовать в разных местах проекта.
Где можно создать параметр
Создать параметр мы можем в файле конфигурации config/services.yaml.
parameters: admin_email: 'admin@mail.com'
Например, так мы можем задать email администратора, который можем использовать в разных местах нашего проекта, где нужно отправить какое-то письмо админу. Это удобно в том плане, что если этот email поменяется, нам его нужно будет поправить только в одном месте и везде его значение поменяется.
Получение параметра в контроллере
Для того, чтобы получить значение параметра в контроллере, мы можем воспользоваться следующей записью:
$this->getParameter('admin_email')
Чтобы получить значение параметра в сервисах, у нас есть несколько вариантов.
Получение параметров в сервисах
1 вариант. Воспользоваться сервисом ContainerBagInterface и получить значение параметра из контейнера.
class ExampleService { public function __construct(private ContainerBagInterface $containerBag) { } public function test() { dd($this->containerBag->get('admin_email')); } }
2 вариант. Передать значение параметра как аргумент к сервису.
parameters: admin_email: 'admin@mail.com' services: App\Services\ExampleService: arguments: $adminEmail: '%admin_email%'
После этого мы можем получить его в конструкторе сервиса:
class ExampleService { public function __construct(private string $adminEmail) { } public function test() { dd($this->adminEmail); } }
Есть также вариант передать значение параметра сразу во все сервисы
# config/services.yaml parameters: admin_email: 'admin@mail.com' services: _defaults: bind: $adminEmail: '%admin_email%'
Параметры очень схожи с переменными окружения (подробнее о переменных окружения можно посмотреть здесь ).
Когда, что лучше использовать. Здесь все достаточно просто, используйте переменные окружения в тех случаях, когда их значение будет изменяться в зависимости от места разворачивания проекта. В остальных случаях стоит использовать параметры.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти