/app-router

Hierarchical routing in application

Primary LanguagePHP

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(Атрибуты запроса, Аргументы форм и Контроллеров)