Ключевые понятия контроллера Limb3
Контроллер - широкое понятие, в целом, контроллер - отвечает за логику работы приложения.
В Limb3 контроллер употребляется в 2-х смыслах:
Front controller - часть приложения, которая отвечает за самую общую логику работы приложения: старт сессии, разбор запроса, проверка кеширования, запуск конкретного кода, отвечающий за бизнес-логику текущей страницы, рендеринг шаблона и т.д.
Page controller (мы его часть называем просто контроллер) - классы, которые реализуют конкретную бизнес-логику приложения, например, удаление новости, аутентификация пользователей, создание документа и т.д. Когда мы говорим контроллер - чаще всего имеем ввиду именно page controller.
Front controller или ядро приложения в приложениях, выполненных на базе WEB_APP, состоит из так называемой цепочки фильтров (Filter chain). см. Использование цепочки фильтров для организации Front-Controller.
С контроллером также следующие понятия:
Request -
Запрос. Запрос содержит данные, которые пришли от клиента (пользователя) к системе. Для обычного сайта в Запросе хранятся POST и GET переменные,
URI запроса, а также данные по отосланным файлам, если они есть.
Объект запроса можно получить в любой точке приложения при помощи тулкита:
$request = lmbToolkit :: instance()->getRequest();
Response - Ответ. Ответ содержит данные, которые система отдает клиенту после полной обработки Запроса. Для обычного сайта в Ответе хранятся заголовки, текст ответа, куки и т.д.
Объект ответа можно получить в любой точке приложения при помощи тулкита:
$response = lmbToolkit :: instance()->getResponse();
Разбор Запроса (Request Dispatching). Обязательный этап в работе почти любого приложения; используется для того, чтобы проанализировать Запрос (Request) и решить, что именно система должна сделать. Результатом работы системы является объект класса
lmbController , который хранится в тулките в виде $dispatched_controller (текущий контроллер). Текущий контроллер обычно имеет так называемое
текущее дествие (current action).
Текущий контроллер можно получить из тулкита:
$dispatched_controller = lmbToolkit :: instance()->getDispatchedController();
(Контроллер (PageController)) - PageController - это группа действий, относящихся к какой-то предметной или функциональной области. Например, есть контроллер администрирования новостей AdminNewsController, в этот контроллер входят действия по отображения списка новостей, созданию новости, редактированию новости, удалению новости. Можно сказать, что контроллер страницы - это объект над которым, в рамках приложения, выполняются какие-то действия. Можно условно рассматривать контроллер как модуль системы.
Action - Действие. Функциональная единица приложения. Можно рассматривать действие как отдельную страницу или лучше как тип страницы. Действие обязательно принадлежит какому-либо контроллеру. Например, есть действие create контроллера AdminNewsController для создания новости. Простое отображение, например, списка новостей - есть действие display контроллера AdminNewsController. Действия чаще всего реализуются как методы классов контроллеров. В реализации действия обычно определяется, какие изменения над данными нужно произвести, какой шаблон должен будет отображен и т.д.
Команды - Набор классов, которые иногда используются для реализации действий.
Контроллер в общем можно расширять как вширь (делать более богатые функционально приложения), так и вглубь (делать более сложную логику работы приложения). То есть можно увеличивать количество контроллеров страниц, а можно регистрировать новые фильтры. Можно усложнить логику работы приложений и за счет выполнения более сложных действий.
См. также:
Обсуждение