/** * Get the Fractal resource instance. * * @return \League\Fractal\Resource\ResourceInterface */ public function getResource() : ResourceInterface { $this->manager->parseIncludes($this->relations); $transformer = $this->resource->getTransformer(); if ($transformer instanceof Transformer && $transformer->allRelationsAllowed()) { $this->resource->setTransformer($transformer->setRelations($this->manager->getRequestedIncludes())); } return $this->resource->setMeta($this->meta); }
/** * Execute the resources transformer and return the data and included data. * * @internal * * @return array */ protected function executeResourceTransformers() { $transformer = $this->resource->getTransformer(); $data = $this->resource->getData(); $transformedData = $includedData = []; if ($this->resource instanceof Item) { list($transformedData, $includedData[]) = $this->fireTransformer($transformer, $data); } elseif ($this->resource instanceof Collection) { foreach ($data as $value) { list($transformedData[], $includedData[]) = $this->fireTransformer($transformer, $value); } } else { throw new InvalidArgumentException('Argument $resource should be an instance of League\\Fractal\\Resource\\Item' . ' or League\\Fractal\\Resource\\Collection'); } return [$transformedData, $includedData]; }