/** * @param SerializableResourceInterface $resource * * @return array */ public function format(SerializableResourceInterface $resource) : array { if ($resource instanceof Resource) { $data = ['name' => $resource->getName()]; if ($this->hasPaginator()) { $data += ['page' => $this->getPaginator()->getCurrentPage()]; } } else { $data = []; /** @var ResourceInterface $singleResource */ foreach ($resource as $singleResource) { $data[] = ['name' => $singleResource->getName()]; } if ($this->hasPaginator()) { $data += ['page' => $this->getPaginator()->getCurrentPage()]; } } return $data; }
/** * * @param SerializableResourceInterface $resource * * @return array */ public function format(SerializableResourceInterface $resource) : array { if ($resource instanceof Resource) { $dataArray = [$resource->getName() => ['data' => $resource->getProperties()]]; if (!empty($resource->getRelations())) { $dataArray[$resource->getName()] += ['relations' => $this->getRelations($resource)]; } $result['data'] = $dataArray; } else { $result = []; $dataArray = []; /** @var Resource $subResource */ foreach ($resource as $subResource) { $data = [$subResource->getName() => ['data' => $subResource->getProperties()]]; if (!empty($subResource->getRelations())) { $data[$subResource->getName()] += ['relations' => $this->getRelations($subResource)]; } $dataArray[] = $data; } $result['data'] = $dataArray; if ($this->hasPaginator()) { $meta = ['total' => $this->getPaginator()->getTotal(), 'count' => $this->getPaginator()->getCount(), 'per_page' => $this->getPaginator()->getPerPage(), 'last' => $this->getPaginator()->getLastPage()]; $result['meta'] = $meta; } } return $result; }