Предположим, у меня есть форум. Эта служба нуждается в URL-адресе API-интерфейса форума. Я хочу, чтобы URL-адрес был либо внутренним, либо внешним.Symfony2 - Как ввести необязательный параметр
Если внутренний, это будет маршрут, выполненный в routing.yml и возвращаемый службой маршрутизатора.
Если внешний, было бы параметр, выполненный в parameters.yml.
подхода я думал это:
Ищет переменную FORUM_URL в parameters.yml. Если этого не существует, попробуйте получить этот маршрут. Остальное, бросьте Исключение.
services:
forums:
class: Acme\ForumsBundle\ForumService
arguments: ["@doctrine.orm.entity_manager","@router", "%forum_url%"]
Проблема с этой реализации является то, что, если эта переменная не определена, она генерирует исключение, так, что мне нужно будет определить его в качестве необязательного параметра (например, вы можете сделать с услугами (. «? @ сервис»)
что бы еще лучше было бы, чтобы быть в состоянии определить, что-то вроде:
"%forum_url% ? %forum_url% : @router"
Любые идеи о ч Чтобы достичь этого?
PS: Если есть другой подход «лучшей практики», я открыт для ввода.
(ответ на решение 1) ... лучше? Спасибо за ваш вклад. Это значит, что мое текущее решение не так уж плохо, не так ли? – xDaizu
проверить мои изменения и указать 2. Это более чистый способ вашего решения, и я думаю, что он достаточно чист (один Ответственность на месте) –
(** Отвечая на решение 3 **) Я знаю, что 3 - это плохая практика. У моего мозга есть чесание, если я пытаюсь впрыснуть весь контейнер, и, похоже, это что-то хорошее. xD (** ответ на решение 2 **) Мне нравится этот подход. Мне это очень нравится. даже несмотря на то, что он не решает необходимость наличия этого параметра, обязательного для параметра parameters.yml. Я думаю, это не так уж плохо. Таким образом, пользователь знает, где «положить», если он решит выйти на внешний. Спасибо вам за то, что вы полностью ответили :) – xDaizu