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

Уровни разделения в Magento:
- Модели (models)
- Ресурс-модели (resource models)
- Лейауты (layouts)
- Блоки (blocks)
- Шаблоны (templates)
- Контроллеры (controllers)
Модели (models) – это компоненты, реализующие бизнес-логику любых сущностей и связи между ними.
Ресурс-модели (resource models) – это мостики между моделями и источниками данных, с которыми те работают. Ресурс-модели содержат специфический для выбранного источника данных код, позволяющий моделям получать, сохранять и удалять данные из источника.
Лейауты (layouts) – это xml-файлы, описывающие связи между блоками, и привязывающие определенный набор блоков к конкретным действиям (actions) контроллера.
Блоки (blocks) - это составные кирпичики, из которых строятся страницы, отдаваемые броузеру пользователя.
Шаблоны (templates) – это файлы, которые используются блоками для формирования вывода. Они содержат в себе HTML разметку для представления данных в нужном виде.
Контроллеры (controllers) – это компоненты, реализующие взаимодействие с пользователем, посредством выдачи визуального представления данных, и обработку действий пользователя.
Соответсвенно, распределение этих компонентов по стандартным уровням MVC осуществляется следующим образом:
MVC Модель:
- Модели
- Ресурс-модели
MVC Представление:
- Лейауты
- Блоки
- Шаблоны
MVC Контроллер:
- Контроллеры

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