# Посредники HttpSoft\Router

Классы посредников пакета HttpSoft\Router, реализующие Psr\Http\Server\MiddlewareInterface.

Все посредники содержат только один публичный метод Psr\Http\Server\MiddlewareInterface::process().

public function process(
    ServerRequestInterface $request, 
    RequestHandlerInterface $handler
): ResponseInterface;

# HttpSoft\Router\Middleware\RouteMatchMiddleware

Использует сборщик маршрутов для сопоставления с входящим запросом и внедряет запрос переданному обработчику с соответствующим экземпляром HttpSoft\Router\Route (используя имя класса HttpSoft\Router\Route в качестве имени атрибута).

Если ни один маршрут не соответствует запросу, то обработчику будет внедрен запрос без экземпляра HttpSoft\Router\Route.

public function __construct(
    HttpSoft\Router\RouteCollector $router,
    Psr\Http\Message\ResponseFactoryInterface $responseFactory,
    array $allowedMethods = ['HEAD'] // общие разрешенные методы запроса для всех маршрутов.
);

Если URI запроса соответствует одному из маршрутов, но метод запроса не соответствует методу этого маршрута, то этот посредник вернет 405 ответ вместе с заголовком Allow, указывающим разрешенные методы маршрута.

Исходный код на GitHub.

# HttpSoft\Router\Middleware\RouteDispatchMiddleware

Проверяет наличие совпадающего маршрута (экземпляра HttpSoft\Router\Route) в запросе. Если он передан, то используется обработчик маршрута, иначе обработка запроса делегируется передаваемому обработчику.

public function __construct(HttpSoft\Runner\MiddlewareResolverInterface $resolver);

Если совпадающий маршрут был передан, то для резолвинга обработчика маршрута используется экземпляр HttpSoft\Runner\MiddlewareResolverInterface из пакета HttpSoft\Runner.

Исходный код на GitHub.