База данных вызовов в Smarty / views / templates - PullRequest
1 голос
/ 05 мая 2009

Сегодня на работе кто-то пытался убедить меня в том, что:

{$obj->getTableInfo()}

отлично подходит для smarty / mvc / templating, потому что он использует метод объектов. Я утверждал, что, поскольку он обращается к базе данных, ему там не место, и он должен быть в контроллере (на самом деле мы не используем MVC). Прав ли я в своем понимании логических разделений, которые используются в MVC и вообще в шаблонах? Или мне чего-то не хватает?

Ответы [ 3 ]

5 голосов
/ 05 мая 2009

Ты прав. Он не прав.

Вызовы базы данных, независимо от того, в какой форме, должны жить в контроллере, если вы хотите сделать MVC правильно.

Очевидно, что люди ссорятся из-за того, что должно быть и делают подобные вещи, но это не правильный путь.

1 голос
/ 05 мая 2009

Ну, нет никаких "официальных" правил или чего-то еще, но я думаю, что нечто подобное принадлежит контроллеру. Я ничего не делаю в своем коде представления, кроме переменных отображения, не допускается ничего более сложного, чем цикл if или foreach. Конечно, не вызывая функции, которые обращаются к базе данных. Это все должно быть загружено контроллером, представление должно только решить, нужно ли ему это отображать или нет.

0 голосов
/ 05 мая 2009

Зависит от контекста и области действия.

Является ли $ obj контроллером или уровнем модели? Это должно ответить, действительно ли это действительно по моему мнению.

В ответ на чтение других ответов.

Имя функции само по себе относится к тому, чтобы быть простым методом получения. Он может сделать вызов БД через уровень контроллера. Что я бы сказал, это нормально. Особенно, если он использует некоторую форму кеширования в памяти. (то есть геттер является установщиком, так как вы хотите кэшировать его только когда он используется один раз.)

...