arutyunov
@arutyunov
Mooza.ru — Делаем сайты

Как использовать $app->params в моделях?

В разделе "Лучшие практики" официального гайда написано, что не стоит в моделях напрямую обращаться к сессии, запросам, а также переменным окружения.

Yii::$app->params как раз содержит массив настроек/параметров, которые относятся к окружению и иногда там очень удобно хранить различные глобальные настройки, которые можно использовать в модели. Например, apiUrl, какие-нибудь пути для заливки изображений и т.д. И к этим данным нужен доступ прямо из модели.

В общем-то проблемы никакой нет, но с точки зрения грамотного подхода к проектированию приложения — это неверно (в соответствии с официальным гайдом).

Каким образом передавать эти параметры в модель? При инициализации модели в конструктор все кидать? Ведь так можно что-нибудь пропустить/забыть или вообще в каком-нибудь месте забыть передать в конструктор какие-либо данные.
  • Вопрос задан
  • 510 просмотров
Пригласить эксперта
Ответы на вопрос 3
@springimport
Наверное, стоит сделать конфигурационный класс который будет передаваться в модель.

Нужно еще подумать над соблюдением SOLID.
Ответ написан
Комментировать
supervaleha
@supervaleha
Web-development
А если хелпер создать и работать с ним? Ну, к примеру.. Это с точки зрения архитектуры как будет выглядеть?
Ответ написан
Комментировать
bitver
@bitver
Все верно в модель данные попадают только через контроллер
"Чтобы не забыть" - в нужном месте модели стоит проверить свойство на наличие данных и в противном случае выкинуть InvalidConfig
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы