Есть ли какой-либо способ получить доступ к секретному значению Symfony в пользовательском коде?

#php #symfony

Вопрос:

Несмотря на то, что они кажутся переменными среды, Symfony на самом деле не загружает секреты в среду, поэтому вы не можете получить к ним доступ через getenv() или $_ENV. Есть ли какой-либо способ получить к ним доступ, кроме как через DI? Я пытаюсь сохранить секретное имя в качестве свойства сущности в базе данных, а затем попросить класс обслуживания прочитать значение соответствующего секрета для любого объекта, запрошенного клиентом API.

Ответ №1:

Вы можете добавить свои значения env к своим параметрам config/services.yaml таким образом (вы даже можете использовать логические значения, JSON или что-то еще). :

 parameters:
    your_secret: '%env(YOUR_SECRET)%'
    your_bool: '%env(bool:YOUR_BOOL)%'
    your_json: '%env(json:YOUR_JSON)%'
 

Затем вы можете, например, извлечь его из контроллера следующим образом:

     $yourSecret = $this->getParameter('your_secret');
 

Комментарии:

1. Вот чем я в итоге занялся… Я хотел вернуться и ответить на свой собственный вопрос, но забыл. Вместо этого вы получаете кредит.