AltoWiki / Разработчикам


Реализация парадигмы MVC в AltoCMS

MVC – это, как известно, Model-Viewer-Controller. В разных фреймворках и в разных CMS она реализуется по своему. И в AltoCMS ее реализация имеет свои особенности.
Model
Модель (Model) в движке представлена триплетом – Сущность (Entity) + Модуль (Module) + Маппер (Mapper).

Сущность (Entity) – это класс, предназначенный для работы с неким набором данных, свойств, которые присущи конкретному объекту. Например, сущность «Пользователь» (User) имеет такие свойства, как идентификатор, логин, адрес электронной почты, возраст и т.д. Один пользователь – это одна сущность (один экземпляр объекта), другой пользователь – другая сущность.

Модуль (Module) – это класс для манипуляции сущностями (чтения, записи, модификации, преобразования, и т.д.). Модуль может создаваться как для работы с одним единственным классом сущности, так и с разными классами сущностей.

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

Объекты классов модуля и маппера обычно существуют в единством экземпляре.

Расположение файлов классов этих компонентов – сущности, модуля и маппера – в директориях движка подчеркивает их связанность. Например, в директории /page находится модуль page, а в поддиректориях entity и mapper соответственно файлы классов сущности page и маппера page.

Т.е. ведущим в этом триплете является модуль, а сущности и маппер принадлежат ему. Это отражено и в названии классов:
class ModulePage extends Module { }
class ModulePage_EntityPage extends Entity { }
class ModulePage_MapperPage extends Mapper { }

Controller
С Контроллером (Controller) в AltoCMS тоже не обошлось без нюансов, хотя в данном случае нюансы касаются больше терминологии и менования классов. Так уж сложилось исторически, что контроллеры в движке именуются «экшенами» (actions). Соответственно, группируются файлы экшенов в директории actions и имеют названия вида ActionName.class.php.

А то, что в традиционном MVC называется «экшен» в терминологии Альто называется «ивент» (event). А в остальном экшены Альто работают так, как и должны работать контроллеры в MVC-концепции.

Viewer
А вот что касается Представления (Viewer), то здесь все традиционно, без всяких нюансов и выверотов. Компонент Представления в Альто построен на базе шаблонизатора Smarty 3, который обеспечивает необходимую гибкость и абстракцию от бизнес-логики.

Основной термин: MVC
Синонимы: Model-Viewer-Controller

Похожие статьи

  • Принцип работы Alto CMS в картинках
    Каждый запрос, который получает движок, сначала обрабатывается роутером (Router). Примерно так же, как каждого посетителя в крупных компаниях встречает девушка на ресепшен, которая узнает, чего надо посетителю,...
  • Компонент Entity (Сущность)
    Сущность – это некий набор данных, которые называют «свойствами» (property). Например, сущность «Пользователь» (User) имеет такие свойства, как идентификатор, логин, адрес электронной почты, и т.д.
  • Доработка плагина «Карты в топиках/статьях»
    Всем привет. Есть замечательный плагин «Карты в топиках/статьях» http://altocms.ru/addons/item/106/. Все в нем замечательно, но хотелось бы кое-что доработать: 1. Сделать вывод карты со всеми метками; 2. При клике на ...
  • Модуль «Карты в топиках/статьях » — вывод всех меток на одной карте
    Всем привет! Есть вот такой замечательный модуль http://altocms.ru/addons/item/106/. И все в нем прекрасно, но вот вывод всех меток на одну карту в нем отсутствует. Может быть кто-то уже вникал в данный вопрос и...

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.