ceive / app-router
Routing in application
Installs: 9
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/ceive/app-router
Requires
- ssilence/php-imap-client: dev-master
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is not auto-updated.
Last update: 2025-10-26 10:52:28 UTC
README
Сущности:
-
Единица вычисления (
Matching)- Имеет доступ к
пути, в дальнейшем и к самомуHTTPRequest
- Имеет доступ к
-
Маршрутизатор (
Router)- Трактуется больше как главный линейный стек/набор маршрутов
- Пока как источник PatternResolver для Машрутов которые определены в роутере
Router::addPlugin- Плагины к событиям маршрутизации (Плагин это кастомный объект(stdClass) который может иметь методы-слушатели)onBegin($matching);- Перед началом вычисления в МаршрутизатореonConformed($matching, $route);- При сопоставлении Шаблона в маршрутеonCheckEnv($matching, $route);- Проверка окружения послеonConformedonReached($matching, $route);- При полном сопоставлении и прохождения пути по шаблонамonFinish($matching, $route);- Стек событий завершения маршрутизации послеonReachedonPrepareRenderParams($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(Атрибуты запроса, Аргументы форм и Контроллеров)