Что такое MVC по отношению к Zend framework?

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
0
3 961
4

Ответы 4

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

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

So what exactly is this MVC pattern everyone keeps talking about, and why should you care? MVC is much more than just a three-letter acronym (TLA) that you can whip out anytime you want to sound smart; it has become something of a standard in the design of modern web applications. And for good reason. Most web application code falls under one of the following three categories: presentation, business logic, and data access. The MVC pattern models this separation of concerns well. The end result is that your presentation code can be consolidated in one part of your application with your business logic in another and your data access code in yet another. Many developers have found this well-defined separation indispensable for keeping their code organized, especially when more than one developer is working on the same application.

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

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

Model-view-controller (MVC) is an architectural pattern used in software engineering. Successful use of the pattern isolates business logic from user interface considerations, resulting in an application where it is easier to modify either the visual appearance of the application or the underlying business rules without affecting the other. In MVC, the model represents the information (the data) of the application; the view corresponds to elements of the user interface such as text, checkbox items, and so forth; and the controller manages the communication of data and the business rules used to manipulate the data to and from the model.

В отношении Zend Framework:

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

Почти верно. Если вы не работаете над тривиальным приложением, Zend_Db_Table не является достаточной основой для Модели. Ознакомьтесь с codeutopia.net/blog/2008/12/06/… для более подробной информации.

Sean McSomething 06.01.2009 20:40

Как можно короче:

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

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

Контроллер больше похож на «обслуживающий люк», в то время как модель на самом деле содержит много логики. Это не только БД. Доступ к БД может быть частью логики модели.

magnetronnie 10.10.2014 15:30

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

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

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

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

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

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

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