Инструменты пользователя

Инструменты сайта


limb3:ru:packages:web_app:controller

Ключевые понятия контроллера 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 - это группа действий, относящихся к какой-то предметной или функциональной области. Например, есть контроллер администрирования новостей AdminNewsController, в этот контроллер входят действия по отображения списка новостей, созданию новости, редактированию новости, удалению новости. Можно сказать, что контроллер страницы - это объект над которым, в рамках приложения, выполняются какие-то действия. Можно условно рассматривать контроллер как модуль системы.
  • Action (Действие). Функциональная единица приложения. Можно рассматривать действие как отдельную страницу или лучше как тип страницы. Действие обязательно принадлежит какому-либо контроллеру. Например, есть действие create контроллера AdminNewsController для создания новости. Простое отображение, например, списка новостей - есть действие display контроллера AdminNewsController. Действия чаще всего реализуются как методы классов контроллеров. В реализации действия обычно определяется, какие изменения над данными нужно произвести, какой шаблон должен будет отображен и т.д.
  • Forward (Перенаправление). Для случаев, когда в зависимости от запроса нужно выполнить другое действие, в PageController существует метод forward, который перенаправляет из текущего action в другой, в том числе и другого контроллера. Соотвественно обрабатываться будет шаблон перенаправленного action. Следует заметить, что название контроллера и действие должно писаться строчными буквами.

Контроллер в общем можно расширять как вширь (делать более богатые функционально приложения), так и вглубь (делать более сложную логику работы приложения). То есть можно увеличивать количество контроллеров страниц, а можно регистрировать новые фильтры. Можно усложнить логику работы приложений и за счет выполнения более сложных действий.

См. также:

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 ______   ___    ____  _      __   ____
/_  __/  / _ )  / __/ | | /| / /  / __/
 / /    / _  | _\ \   | |/ |/ /  _\ \  
/_/    /____/ /___/   |__/|__/  /___/
 
limb3/ru/packages/web_app/controller.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)