У меня есть несколько параметров, связанных с конфигурацией AWS, мне нужно получить доступ из моего сервиса. Обычно я добавляю ParameterBagInterface
в сервис, если мне нужно несколько параметров, и использую его для получения нужных мне параметров, таким образом, мне не нужно проверять, действительно ли параметр существует, и обрабатывать его самостоятельно, как * 1002. * бросая ParameterNotFoundException
, если параметр не существует.
Но чтобы ParameterBag
работал так, как мне нужно, необходимо добавить параметры в service.yml, например:
aws.default_one: '%env(AWS_DEFAULT_BUCKET)%'
aws.default_two: '%env(AWS_DEFAULT_BUCKET)%'
и теперь я могу достать его из сумки вот так $this->parameterBag->get('aws.default_one')
Но синтаксис yml позволяет добавлять вложенные параметры, поэтому я могу добавить параметры в конфигурацию следующим образом:
aws:
default_one: '%env(AWS_DEFAULT_BUCKET)%'
default_two: '%env(AWS_DEFAULT_BUCKET)%'
это выглядит намного чище и более читабельно, особенно когда у вас много параметров, но таким образом я не могу просто написать $this->parameterBag->get('aws.default_one')
(это выдаст ошибку Параметр "aws.default_one" должен ) и единственный способ получить его из пакета параметров, который я нашел, - это $this->parameterBag->get('aws')['default_one']
, но тогда вообще не имеет смысла использовать пакет параметров, так как вам все еще нужно выполнить проверку самостоятельно, чтобы проверить, если default_one
ключ существует и обрабатывать его. И в таком случае вместо передачи всего пакета параметров я могу просто передать %aws%
службе и работать с ней как с массивом php.
Итак, вопросы:
- Какова лучшая практика для добавления списка параметров в
сервис, введите пакет параметров или просто передайте каждый параметр или массив
Вложенные параметры в сервис?
- может быть, есть какой-то способ получить вложенный параметр, используя точечную запись, вместо того, чтобы делать, как
$this->parameterBag->get('aws')['default_one']
, поскольку это облегчает жизнь с использованием только пакета параметров, который выдает исключение?