О применении MVC

Я видел все типы учебных пособий: представление работающего контроллера, передача модели контроллера в представление, установка параметров настройки контроллера представления.

Пример: MVC для чтения новости. Контроллер загружает модель. Если результат модели "ложный", я могу вызвать другой метод из другой модели, содержащей другой блок.

Класс View должен иметь отношение к View_found View_not_found?

if (model-> news === true) {
      $ comment = model-> comment ()
}

Будет ли этот фрагмент кода ответственным за контроллер или это правило, что такая логика должна принадлежать бизнес-модели?

4 ответа

Решение

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

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

для представления он должен получать строку предпочтительно только через одну точку входа, функцию, которая будет выполнять escape и echo. кроме этого, контроллер никогда не должен отображаться на странице.

все остальное для контроллера, чтобы переварить, как проверка, вызов, что нужно, определить, что к чему. контроллер видит все:

//get from model, pass parameter - that's it
if (model-> news ('all')) {
    //manipulate data for result
    //get appropriate view
    view->parse(html); //pass html to view, that's it
} else {
    //manipulate data for no result
    //get appropriate view
    view->parse(html); //pass html to view, that's it
}

Как сказал Расмус Лердорф

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

На самом деле, в веб-приложении обычно используют "MVC, ориентированный на действие", а не "MVC события". У вас есть контроллер, который знает его модель и представление для применения. Для отображения новостей у вас должен быть класс News, который является вашей моделью, NewsProvider, который работает с вашей базой данных. Ваш контроллер вычисляет данные, предоставленные базой данных и пользователем, и вызывает правильное представление.

Если вы хотите найти комментарий к новости модели, вам нужно создать модель комментария, получить ее из вашего dataProvider и визуализировать для просмотра.

Вот часть кода действия контроллера:-). Вся логика должна быть в контроллере. Представления представляют собой только части контента.

ОБНОВЛЕНО Рекомендую использовать здесь dataProvider. Метод модели (геттер) может вернуть объект DP для модели. Это зависит от того, какую платформу вы используете.

Другие вопросы по тегам