'Retrieved Project', 'message' => 'You have successfully retrieved a Project' ]; } /** @var CanFetchProject */ private $canFetchProject; /** @var FetchesProject */ private $fetchesProject; /** * FetchProjectControllerLogic constructor. * @param CanFetchProject $canFetchProject * @param FetchesProject $fetchesProject */ public function __construct(CanFetchProject $canFetchProject, FetchesProject $fetchesProject) { $this->canFetchProject = $canFetchProject; $this->fetchesProject = $fetchesProject; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { $this->canFetchProject->passes(); $query = $this->fetchesProject->execute(['id' => $request->route('id')]); return $this->resourceResponse(new ProjectResource($query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }