Что такое MVC по отношению к Zend Framework? - PullRequest
4 голосов
/ 06 января 2009

Я изучаю Zend Framework , и он использует модель MVC.

Я до сих пор не понимаю, что такое MVC Модель, Вид, Контроллер .

Для чего предназначены три области и как будет выглядеть поток программы?

Ответы [ 4 ]

5 голосов
/ 06 января 2009

M - Модели - часто самый большой источник путаницы. Это те части вашего приложения, которые выполняют всю «тяжелую работу» - они обрабатывают доступ к базе данных, выполняют сложную логику для конкретного приложения и отвечают за большую часть того, что «делает» ваше приложение. В отличие от представлений и контроллеров, Zend Framework не имеет базового класса для моделей - это потому, что нет реальной согласованности в том, что они делают. Некоторые фреймворки (например, Ruby on Rails) пытаются представить какую-то оболочку базы данных в качестве основы для Model, но есть много случаев (сторонний фид / API, статические файлы, непостоянные вычисления, концепции, охватывающие несколько таблиц .. .) для которого это, в лучшем случае, вводящая в заблуждение практика. Модель - это часть приложения, в которой вы все еще вынуждены программировать, и фреймворк не может вас от этого спасти.

V - Представления - самые простые компоненты здесь. Это должны быть простые шаблоны PHP / HTML. Им дают объекты вида, массивы, строки и т. Д., Которые они затем помещают на страницу. Здесь не должно быть много (если есть) сложной логики - зациклите их, отобразите это (если определено), полоску зебры, эту таблицу и еще много чего. С помощниками View (например, помощником, который магически отображает Zend_Form) происходит какая-то магия, но это не обязательно для понимания всей системы.

C - Контроллеры - В самом широком смысле контроллер отвечает за принятие пользовательских запросов, их отправку объектам модели и подготовку моделей для передачи в представления. Это клей, который скрепляет все вместе. Если вы используете Zend MVC, вам нужны 2 контроллера - Zend_Controller_Front и Zend_Controller_Action.

Zend_Controller_Front (который вы получаете «бесплатно», если вы используете Zend_Layout::startMVC()) - это единственная точка входа для вашего приложения - оно обрабатывает необработанные пользовательские запросы и переводит URL-адреса в действие для вызова. Есть несколько мест, где можно подключить этот модуль для обработки таких вещей, как аутентификация и ограничения доступа, но, по сути, это всего лишь «гаишник» на входе, направляющий входящие запросы.

Zend_Controller_Action является базовым классом для действий - по сути, Action представляет собой то, что делает ваше приложение (войдите в систему, составьте список записей в блоге, запустите МБР, закажите пиццу ...), но не несет прямой ответственности за это на самом деле. , Контроллеры действий довольно скучны - они извлекают значения из форм и URL-адресов, вызывают несколько методов в классах модели, чтобы фактически выполнить действие, и выводят результаты в представление. Как уже было сказано, это «клей», который скрепляет Модели и Виды.

Грубый тест, чтобы увидеть, разделяете ли вы вещи по правильным линиям, состоит в том, чтобы представить существенное изменение вашего сайта. Визуальный редизайн будет почти полностью обрабатываться в представлениях. Перемещение всех ваших URL изменит ваши контроллеры. Преобразование из веб-приложения в приложение с графическим интерфейсом заменит представления и контроллеры, но ваша модель будет в основном неизменной. Если вы переписываете свои модели, у вас есть совершенно новое приложение.

2 голосов
/ 06 января 2009

Есть несколько других вопросов по Stackoverflow, которые дают объяснение концепции MVC:

Очень хорошее объяснение концепции можно найти в Wikipedia :

Модель-представление-контроллер (MVC) является архитектурный образец, используемый в программном обеспечении машиностроение. Успешное использование шаблон изолирует бизнес-логику от соображения пользовательского интерфейса, в результате чего приложение, где это легче изменить либо визуальный внешний вид приложения или основные бизнес-правила без влияя на других. В MVC модель представляет информацию (данные) приложения; вид соответствует элементам пользователя интерфейс, такой как текст, флажок предметы и пр .; и контроллер управляет связью данных и бизнес-правил, используемых для манипулировать данными в и из модель.

По отношению к Zend Framework :

  • модели обычно представлены расширениями Zend_Db_Table класса
  • представления представлены в виде файлов *.phtml в определенной папке сценариев, которые обрабатываются классом Zend_View.
  • контроллеры определяются расширениями класса Zend_Controller_Action.
0 голосов
/ 06 января 2009

Как можно меньше слов:

  • модель БД
  • просмотр - это то, что вы видите (страница)
  • контроллер клея (логика)

Ваши модели знают, как обращаться к таблицам, содержащим ваши данные; ваши взгляды знают, как отображать контент; и ваши контроллеры склеивают его (какой вид я показываю? какую модель мне использовать?).

0 голосов
/ 06 января 2009

Zend Framework имеет собственный очень приятный Быстрый старт / Учебное пособие , в котором, в частности, представлен MVC.

Цитата оттуда:

Так что же это за паттерн MVC? все продолжают говорить, и почему тебя должно волновать? MVC намного больше, чем просто трехбуквенный аббревиатура (TLA), которая вы можете вытащить в любое время звучит умно; это стало чем-то стандарта в дизайне современного веб-приложения. И не зря. Большая часть кода веб-приложения подпадает под одна из следующих трех категорий: представление, бизнес-логика и данные доступ. Шаблон MVC моделирует это разделение проблем хорошо. Конец В результате код вашей презентации могут быть объединены в одной части ваше заявление с вашим бизнесом логика в другом и ваш доступ к данным код в еще одном. Многие разработчики нашли это четко определенное разделение необходимо для хранения их код организован, особенно когда более одного разработчика работают над то же приложение.

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