MVC, как вид должен быть доступен с контроллера? - PullRequest
0 голосов
/ 08 марта 2010

Я только изучаю MVC, чтобы вы могли найти мой вопрос довольно странным ...

Мой контроллер имеет доступ к различным общим объектам через объект-контейнер, передаваемый конструктору контроллера. Чтобы получить доступ к общим объектам, я должен сделать $ this-> container-> db для доступа к адаптеру базы данных или $ this-> container-> memcache для доступа к адаптеру Memcached. Я хочу знать я должен поместить объект просмотра в контейнер с общими объектами или нет ?

С одной стороны, действительно удобно смотреть из этого контейнера, но таким образом я не смог создать несколько экземпляров Views (например, каждый раз, когда я вызываю метод Controller из View, у меня должен быть еще один экземпляр View) , Каково решение? Как передать объект View в контроллер и / или как создать новые экземпляры представления из контроллера?

Спасибо!

Ответы [ 2 ]

1 голос
/ 08 марта 2010

Если вы хотите, чтобы этот опыт DI, делали это и на представлениях, но я не знаю, действительно ли это вам поможет в любом случае. Никогда не вызывайте методы контроллера из представлений. Вместо этого напишите некоторые частичные методы представления и вызовите их из представлений, которые определяют макет страницы (что-то похожее на то, что делает Rails). ИМХО, если вы хотите постепенно переходить на MVC, начинать с основных принципов и итеративно разбираться в деталях, но не изучайте архитектурный / дизайнерский паттерн как MVC по частям - архитектура, дизайн, все имеет значение:)

0 голосов
/ 09 марта 2010

Хм, возможно попробуйте реализовать кэширование для статических частей. ИМХО попробуйте вставить объект кэширования (через DI) в контроллер, и пусть этот объект решит, хотите ли вы отправить кэшированное частичное представление или создать новое. Если вы хотите кэшировать данные из базы данных, используйте один и тот же шаблон от контроллера к моделям, поэтому всякий раз, когда в контроллере вам нужны модели, задайте объект db cacher (тот же принцип DI). Это достаточно ясно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...