'Retrieved PackageItem', 'message' => 'You have successfully retrieved a PackageItem' ]; } /** @var CanFetchPackageItem */ private $canFetchPackageItem; /** @var FetchesPackageItem */ private $fetchesPackageItem; /** * FetchPackageItemControllersLogic constructor. * @param CanFetchPackageItem $canFetchPackageItem * @param FetchesPackageItem $fetchesPackageItem */ public function __construct(CanFetchPackageItem $canFetchPackageItem, FetchesPackageItem $fetchesPackageItem) { $this->canFetchPackageItem = $canFetchPackageItem; $this->fetchesPackageItem = $fetchesPackageItem; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { $this->canFetchPackageItem->passes(); $query = $this->fetchesPackageItem->execute(['id' => $request->route('id')]); return $this->resourceResponse(new PackageItemResource($query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }