Вопрос

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

{$obj->getTableInfo()}

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top