readFile = $readFile ? Closure::fromCallable($readFile) : fn (string $file) => file_get_contents($file); } public function handle(ServerRequestInterface $request): ResponseInterface { /** @var RouteResult $routeResult */ $routeResult = $request->getAttribute(RouteResult::class) ?? RouteResult::fromRouteFailure(null); $status = StatusCodeInterface::STATUS_NOT_FOUND; $template = $routeResult->isFailure() ? self::NOT_FOUND_TEMPLATE : self::INVALID_SHORT_CODE_TEMPLATE; $templateContent = ($this->readFile)(sprintf('%s/%s', self::TEMPLATES_BASE_DIR, $template)); return new Response\HtmlResponse($templateContent, $status); } }