router = $router; } public function __invoke(ServerRequestInterface $request, callable $next) { $route = $this->router->match($request); if (is_null($route)) { return $next($request); } $params = $route->getParams(); $request = array_reduce(array_keys($params), function ($request, $key) use ($params) { return $request->withAttribute($key, $params[$key]); }, $request); $request = $request->withAttribute(get_class($route), $route); return $next($request); } }