helloJsonResource = new HelloJsonResource(); $this->helloTextResource = new HelloTextResource(); $this->dbResource = new DbResource($database); $this->queriesResource = new QueriesResource($database); $this->fortuneResource = new FortuneResource($database); $this->updateResource = new UpdateResource($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 $this->helloTextResource; case '/json': return $this->helloJsonResource; case '/db': return $this->dbResource; case '/queries': return $this->queriesResource; case '/fortunes': return $this->fortuneResource; case '/update': return $this->updateResource; } return new NotFoundResource(); } protected function getCache(Request $request): CacheItemPoolInterface { if (!$this->cache) { $this->cache = new ArrayCachePool(); } return $this->cache; } }