Многоликий MVC

Михаил Бессолов, 11.07.09

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

Стандартный шаблон MVC (model-view-controller, модель-представление-контроллер):

MVC pattern

Уровни разделения в Magento:

  • Модели (models)
  • Ресурс-модели (resource models)
  • Лейауты (layouts)
  • Блоки (blocks)
  • Шаблоны (templates)
  • Контроллеры (controllers)

Модели (models) – это компоненты, реализующие бизнес-логику любых сущностей и связи между ними.

Ресурс-модели (resource models) – это мостики между моделями и источниками данных, с которыми те работают. Ресурс-модели содержат специфический для выбранного источника данных код, позволяющий моделям получать, сохранять и удалять данные из источника.

Лейауты (layouts)
– это xml-файлы, описывающие связи между блоками, и привязывающие определенный набор блоков к конкретным действиям (actions) контроллера.

Блоки (blocks)
- это составные кирпичики, из которых строятся страницы, отдаваемые броузеру пользователя.

Шаблоны (templates) – это файлы, которые используются блоками для формирования вывода. Они содержат в себе HTML разметку для представления данных в нужном виде.

Контроллеры (controllers) – это компоненты, реализующие взаимодействие с пользователем, посредством выдачи визуального представления данных, и обработку действий пользователя.

Соответсвенно, распределение этих компонентов по стандартным уровням MVC осуществляется следующим образом:

MVC Модель:

  • Модели
  • Ресурс-модели

MVC Представление:

  • Лейауты
  • Блоки
  • Шаблоны

MVC Контроллер:

  • Контроллеры

MVC pattern in Magento

В последующих версиях Magento может произойти выделение еще одного дополнительного слоя из ресурс-моделей:

  • Ресурс-модели будут предоставлять интерфейс для работы с абстрактным типом источников данных (например, реляционная база данных, используемая только как хранилище данных, в отличие от реляционной базы данных, содержащей часть логики на сервере БД)
  • Ресурсы будут являться адаптерами, включащими только тот код, который является специфическим для конкретного источника данных (например ресурс для работы с MySQL, с Oracle или с Microsoft SQL)

Написать комментарий