php-routing (Ceive\Routing)
Сущности:
-
Единица вычисления (
Matching
)- Имеет доступ к
пути
, в дальнейшем и к самомуHTTPRequest
- Имеет доступ к
-
Маршрутизатор (
Router
)- Трактуется больше как главный линейный стек/набор маршрутов
- Пока как источник PatternResolver для Машрутов которые определены в роутере
Router::addPlugin
- Плагины к событиям маршрутизации (Плагин это кастомный объект(stdClass) который может иметь методы-слушатели)onBegin($matching);
- Перед началом вычисления в МаршрутизатореonConformed($matching, $route);
- При сопоставлении Шаблона в маршрутеonCheckEnv($matching, $route);
- Проверка окружения послеonConformed
onReached($matching, $route);
- При полном сопоставлении и прохождения пути по шаблонамonFinish($matching, $route);
- Стек событий завершения маршрутизации послеonReached
onPrepareRenderParams($route, $params);
- Подготовка параметров для отрисовки
-
Маршрут (
Route
)- Интерфейс для получения имен плейсхолдеров
- Вычисление
match
объектаMatching
- Рендеринг шаблона по переданным аргументам в качестве подстановщиков и пре-обработки
- Ключевые методы для кастомизации и дальнейшего расширения
_matchingConfirmed(Matching $matching)
- Доступны параметры шаблона, пополнение Matching объекта параметрами(Биндинги/Конвертация) и ссылкой_checkEnv(Matching $matching)
- Проверка окружения, здесь предполагается проверка HTTP запросов, отсуда может произойти выброс в случае не удачи
Нужно подсоеденить ORM и маппинг для Binding ORM Projection paths Выборка нужного объекта по его пути.
Разделение биндингов маршрута на разные типы
-
Статический
- Если объекты по идентификатору не найдены
То происходит ошибка уровня не соответствия
Это ошибка типа
404 not found
- Если объекты по идентификатору не найдены
То происходит ошибка уровня не соответствия
Это ошибка типа
-
Динамический
continuable route
- Если объекты по идентификаторам не найдены То маршрутизатор переходит к следующему маршруту минуя текущий - не соответствуюший
Предполагаемые проверки\реакции на HTTP запрос
- Наличие SSL шифрования (
http|https
) - Доменное
имя/под-домен/зона
- Метод запроса (
Method: GET POST PUT HEAD OPTIONS
) GET/POST
параметры запросаJSON/XML
Объект при POST запросе (вместо POST Параметров)- Смешанный режим
POST-params/Файлы/JSON|XML
(multipart/form-data | multipart
) - Заголовки (
Accept | Accept-Encoding
)application/json text/html text/*
- Защита от неожиданных запросов с клиента и
реакция нормализации
(CSRF protection) напримерAccept: image/*
не семантичный контроллеру проводящему действиеCRUD
Передача приложению сигнала к реагированию (Перенаправление / Ошибка уровня запроса(BAD REQUEST))
brainstorm:
- Локации приложения / Родительские цепочки
- Переключение опций Диспетчеризации и составляющих активных компонентов системы
- Интеграция ORM(Чтение/Метаданные Секторов) для Биндинга и т.п
- Интеграция HTTP(Атрибуты запроса, Аргументы форм и Контроллеров)