/** * @param \Psr\Http\Message\ServerRequestInterface $request The request. * @param \Psr\Http\Message\ResponseInterface $response The response. * @param callable $next The next middleware to call. * @return \Psr\Http\Message\ResponseInterface A response. */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, $next) { try { Router::setRequestContext($request); $params = (array) $request->getAttribute('params', []); if (empty($params['controller'])) { $path = $request->getUri()->getPath(); $request = $request->withAttribute('params', Router::parse($path, $request->getMethod())); } } catch (RedirectException $e) { return new RedirectResponse($e->getMessage(), $e->getCode(), $response->getHeaders()); } return $next($request, $response); }