D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
psa
/
admin
/
plib
/
modules
/
grafana
/
vendor
/
mezzio
/
mezzio-router
/
src
/
Middleware
/
Filename :
RouteMiddleware.php
back
Copy
<?php declare (strict_types=1); namespace PleskGrafana\Mezzio\Router\Middleware; use PleskGrafana\Mezzio\Router\RouteResult; use PleskGrafana\Mezzio\Router\RouterInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; /** * Default routing middleware. * * Uses the composed router to match against the incoming request, and * injects the request passed to the handler with the `RouteResult` instance * returned (using the `RouteResult` class name as the attribute name). * * If routing succeeds, injects the request passed to the handler with any * matched parameters as well. * * @final */ class RouteMiddleware implements MiddlewareInterface { /** @var RouterInterface */ protected $router; public function __construct(RouterInterface $router) { $this->router = $router; } public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface { $result = $this->router->match($request); // Inject the actual route result, as well as individual matched parameters. $request = $request->withAttribute(RouteResult::class, $result); if ($result->isSuccess()) { /** @var mixed $value */ foreach ($result->getMatchedParams() as $param => $value) { $request = $request->withAttribute($param, $value); } } return $handler->handle($request); } /** * @internal This should only be used by unit tests. */ public function getRouter() : RouterInterface { return $this->router; } }