Шаблон проектирования MVC (Model-View-Controller) организует и разделяет приложение на три отдельные роли:
- Модель - инкапсулирует данные приложения и бизнес логику;
- Вид - извлекает данные из модели и форматирует их для представления клиенту;
- Контроллер - управляет течением приложения, получает входные данные из запроса, и передаёт их модели и отображению.
Слой модели представлен в mzz ORM.
Слой представления использует Smarty в качестве шаблонного движка. Более подробное описание работы со Smarty вы можете найти на официальном сайте.
Контроллер -- слой, связывающий модель и представление. Именно в контроллер поступают данные запроса, на основе которых происходит получение нужных данных с помощью модели, и именно в контроллере эти данные в "сыром" виде передаются в шаблон. Контроллер вызывается шаблоном и обрабатывает какое-то определённое действие (action). Рассмотрим типичный контроллер mzz (отображение конкретной новости):
<?php class newsViewController extends simpleController { protected function getView() { $newsMapper = $this->toolkit->getMapper('news', 'news'); $id = $this->request->getInteger('id'); $news = $newsMapper->searchByKey($id); if (empty($news)) { return $this->forward404($newsMapper); } $this->smarty->assign('news', $news); return $this->smarty->fetch('news/view.tpl'); } } ?>
Контроллер в mzz должен быть отнаследован от базового класса simpleController и реализовывать как минимум один метод - getView(). Уровень доступа к этому методу должен быть protected, потому как этот метод запускается автоматически из simpleController, после того как будут произведены необходимые подготовительные действия. Ручной запуск контроллеров рекомендуется делать через метод run() (однако, вероятно, вам это не понадобится делать).
В классе simpleController на стадии инициализации создаются ссылки на следующие объекты:
$this->request- ссылка на объект классаhttpRequest, содержит данные текущего запроса.$this->response- ссылка на объект классаhttpResponse, содержит данные ответа клиенту.$this->smarty- ссылка на объектSmarty.$this->toolkit- ссылка на объект классаsystemToolkit, являющийся фабрикой для создания объектов системного характера.
Данные, которые возвращает метод getView(), будут добавлены к текущему ответу клиенту.