[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Курс "MVC от теории к практике"
Страницы: 1, 2, 3, 4, 5
chakopss
Что то новенькое о MVC хотелось бы услышать...
Santehnick
Цитата (XCross @ 22.09.2011 - 04:41)
Нашел отличную схему. Может кому-нибудь поможет.
У меня немного прояснилось представление о функциях контроллера, модели и представления...

Особенно после вот этой заметки:

Цитата
Начинающие программисты (особенно в веб-программировании) очень часто трактуют архитектурную модель MVC как пассивную модель MVC. Тогда модель может быть исключительно совокупностью функций для доступа к данным, а контроллер — как элемент системы, содержит бизнес-логику. В результате код моделей по факту является средством получения данных из СУБД, а контроллер представляет собой типичный модуль, наполненный бизнес-логикой или скрипт в терминологии веб-программирования. В результате такого понимания MVC разработчики стали писать код, который известный в кругах Zend Framework сообщества разработчик Pádraic Brady охарактеризовал как ТТУК — «Толстые тупые уродливые контроллеры» (Fat Stupid Ugly Controllers)[6] перевод:
Среднестатистический ТТУК получал данные из БД (используя уровень абстракции базы данных, делая вид, что это модель) или манипулировал, валидировал, записывал, а также передавал данные в вид. Такой подход стал очень популярен потому, что использование таких контроллеров похоже на классическую практику использования отдельного php файла для каждой страницы приложения.
Но в объектно-ориентированном программировании используется активная модель MVC, где модель это не только совокупность кода доступа к данным и СУБД, а вся бизнес-логика. В свою очередь контроллеры должны избавляться от логики приложения (бизнес-логики). Таким образом Контроллер становится «тонким» и выполняет исключительно функцию связующего звена (glue layer) между отдельными компонентами системы.


user posted image

Сейчас я представляю себе это так.

Пришел юзер, хочет воспользоваться фидбеком. Знач, нажимает на кнопу или ссылку. В точке входа(index) подключается контроллер. Дальше, он уже определяет, если это первый раз, т.е. никаких данных на анализ ему не прислали, то подключает представление под номером 1(их же хоть сколько можно сделать, для каждого случая свой), в этом представлении подключается шаблон странички и выводится, ну если нужно, еще чего происходит.

Теперь перед юзером страничка. Он заполнил форму, нажал отправить, данные ушли контроллеру, он понял, что это форма, нужно проверить, все-ли в ней верно, если нет, то в массив положить ошибочек, и подключить представление 2. В этом представлении из массива формируется строка с ошибками, подключается шаблон и т.д.


Правильно или нет?

Твоё мнение о контроллерах, как раз и есть ТТУК. Контроллер это связующее звено, между моделью и представлением, его задача получить данные от модели и отдать их в представление. Это всё, что он должен делать. Никакой бизнес-логики в контроллере быть не должно, т.е. все правила валидации и всё прочее должно находиться в модели. Таким образом у нас должен быть "тонкий" контроллер и "толстая" модель. Модель это не только работа с хранилищем (базой данных), модель - это и есть вся бизнес-логика, в том числе включая и работу с хранилищем (базой данных). Соответственно приведенная тобой схема противоречит идеологии MVC, в которой предлагается проверку данных выполнять в контроллере.

Вот хороший ответ об этом.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.