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

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


limb3_2007_2:ru:packages:web_app:request_dispatching

Разбор запроса и определение текущего сервиса и действия

Что мы получаем из запроса?

При получении запроса система должна определить, что она должна сделать. По сути это означает, что необходимо определить на основе Запроса следующие сущности:

  • lmbService - сервис. По сути система представляет какой-либо сервис пользователю. lmbService «знает», какая команда относится к тому или иному действию, а также прочие характеристики действия (уровень прав доступа, иконка и т.д. - зависит от проекта и пакетов, которые в нем использованы).
  • Action - действие, которое сервис должен выполнить.

Какие понятия связаны с разбором запроса?

Сам разбор запроса производится в фильтре lmbRequestDispatchingFilter, который получает в конструкторе объект, реализующий интерфейс lmbRequestDispatcher, который состоит из одного метода dispatch($request). Это метод должен возвращать массив параметров, доступных из Запроса.

Из параметров, которые вернул lmbRequestDispatcher :: dispatch($request) метод, фильтр lmbRequestDispatchingFilter создает объект класса lmbDispatchedRequest, который хранит текущий Сервис и текущее действие. Имя сервиса и действия может находится в массиве параметров, возвращаемых из dispatch() метода, например:

  $result = array('service' => 'Newsline',
                  'action' => 'archive', 
                  'id' => 150);

В базовом пакете доступен класс lmbRoutesRequestDispatcher, реализующий интерфейс lmbRequestDispatcher. lmbRoutesRequestDispatcher опирается на класс lmbRoutes, который используется для получению параметров из строк исходя из определенных паттернов (идея lmbRoutes была взята из Ruby on Rails фреймворка).

UML диаграммы

Статическая диаграмма классов

}

Диаграмма последовательностей

}

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   __    _  __ __  __  _   __  _____
  / /   | |/_/ \ \/ / | | / / / ___/
 / /__ _>  <    \  /  | |/ / / (_ / 
/____//_/|_|    /_/   |___/  \___/
 
limb3_2007_2/ru/packages/web_app/request_dispatching.txt · Последнее изменение: 2010/11/10 10:02 — 127.0.0.1