cache = new ArrayCachePool; $this->database = $database; } public function run(Request $request): Response { try { return parent::run($request); } catch (Throwable $e) { return new ServerErrorResponse; } } public function findResource(Request $request): HttpResource { switch ($request->getPath()) { case '/plaintext': return new HelloTextResource; case '/json': return new HelloJsonResource; case '/db': return $this->database->withSession(function (Session $session) { return new DbResource($session); }); case '/queries': return $this->database->withSession(function (Session $session) { return new QueriesResource($session); }); case '/fortunes': return $this->database->withSession(function (Session $session) { return new FortuneResource($session); }); case '/update': return $this->database->withSession(function (Session $session) { return new UpdateResource($session); }); } return new NotFoundResource; } protected function getCache(Request $request): CacheItemPoolInterface { return $this->cache; } }