При получении запроса система должна определить, что она должна сделать. По сути это означает, что необходимо определить на основе Запроса следующие сущности:
Если вы читали страницу "Использование цепочки фильтров для организации Front-Controller", то уже знаете, что в типичном Limb3 приложении разбор запроса производится в фильтре lmbRequestDispatchingFilter, который получает в конструктор объект диспатчера запросов, реализующий интерфейс lmbRequestDispatcher.
Интерфейс lmbRequestDispatcher состоит из одного метода dispatch($request). Это метод должен возвращать массив параметров, доступных из Запроса.
Обычно массив этих параметров, которые возвращает диспатчер запроса выглядит следующим образом:
$result = array('controller' => 'newsline', // Note:! under_scores for controller param 'action' => 'archive', 'id' => 150);
Из параметров, которые вернул диспатчер запросов, фильтр lmbRequestDispatchingFilter создает объект класса lmbController при помощи метода lmbToolkit :: instance()→createController($controller_name) и ставит ему текущее действие (current action). Для этих целей фильтр использует параметры controller и action (см. пример параметров выше).
Полученный объект $dispatched_controller отдается в тулкит при помощи метода setDispatchedController($controller).
В пакете WEB_APP доступен класс lmbRoutesRequestDispatcher, реализующий интерфейс lmbRequestDispatcher. Именно он используется по-умолчания как диспатчер запросов в туториалах.
lmbRoutesRequestDispatcher опирается на класс lmbRoutes, который используется для получения параметров из строк исходя из определенных паттернов (идея класса lmbRoutes была взята из Ruby on Rails фреймворка, ее сейчас можно встретить в различных фреймворках, например, в Zend framework).
Обсуждение