public function dispatchMiddleware(ServerRequestInterface $request, ResponseInterface $response, callable $next)
{
$routeResult = $request->getAttribute(Router\RouteResult::class, false);
if (!$routeResult) {
return $next($request, $response);
}
$middleware = $routeResult->getMatchedMiddleware();
if (!$middleware) {
throw new Exception\InvalidMiddlewareException(sprintf('The route %s does not have a middleware to dispatch', $routeResult->getMatchedRouteName()));
}
$middleware = $this->prepareMiddleware($middleware, $this->container);
return $middleware($request, $response, $next);
}