Created
October 1, 2015 10:12
-
-
Save prolic/b046a89ee048783576dc to your computer and use it in GitHub Desktop.
Custom JSON Api Serializer using Fractal and proxy pattern for https://github.com/thephpleague/fractal/pull/234
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace My; | |
use League\Fractal\Pagination\CursorInterface; | |
use League\Fractal\Pagination\PaginatorInterface; | |
use League\Fractal\Resource\ResourceInterface; | |
use League\Fractal\Serializer\JsonApiSerializer; | |
class CustomJsonApiSerializer extends SerializerAbstract | |
{ | |
private $jsonApiSerializer; | |
public function __construct(JsonApiSerializer $jsonApiSerializer) | |
{ | |
$this->jsonApiSerializer = $jsonApiSerializer; | |
} | |
/** | |
* Serialize a collection. | |
* | |
* @param string $resourceKey | |
* @param array $data | |
* | |
* @return array | |
*/ | |
public function collection($resourceKey, array $data) | |
{ | |
return $this->jsonApiSerializer->collection($resourceKey, $data); | |
} | |
/** | |
* Serialize an item. | |
* | |
* @param string $resourceKey | |
* @param array $data | |
* | |
* @return array | |
*/ | |
public function item($resourceKey, array $data) | |
{ | |
return $this->jsonApiSerializer->item($resourceKey, $data); | |
} | |
/** | |
* Serialize the included data. | |
* | |
* @param ResourceInterface $resource | |
* @param array $data | |
* | |
* @return array | |
*/ | |
public function includedData(ResourceInterface $resource, array $data) | |
{ | |
return $this->jsonApiSerializer->includeData($resource, $data); | |
} | |
/** | |
* Serialize the meta. | |
* | |
* @param array $meta | |
* | |
* @return array | |
*/ | |
public function meta(array $meta) | |
{ | |
return $this->jsonApiSerializer->meta($meta); | |
} | |
/** | |
* Serialize the paginator. | |
* | |
* @param PaginatorInterface $paginator | |
* | |
* @return array | |
*/ | |
public function paginator(PaginatorInterface $paginator) | |
{ | |
return $this->jsonApiSerializer->paginator($paginator); | |
} | |
/** | |
* Serialize the cursor. | |
* | |
* @param CursorInterface $cursor | |
* | |
* @return array | |
*/ | |
public function cursor(CursorInterface $cursor) | |
{ | |
return $this->jsonApiSerializer->cursor($cursor); | |
} | |
public function mergeIncludes($transformedData, $includedData) | |
{ | |
return $this->jsonApiSerializer->mergeIncludes($transformedData, $includedData); | |
} | |
/** | |
* Indicates if includes should be side-loaded. | |
* | |
* @return bool | |
*/ | |
public function sideloadIncludes() | |
{ | |
return $this->jsonApiSerializer->sideloadIncludes(); | |
} | |
/** | |
* Hook for the serializer to inject custom data based on the relationships of the resource. | |
* | |
* @param array $data | |
* @param array $rawIncludedData | |
* | |
* @return array | |
*/ | |
public function injectData($data, $rawIncludedData) | |
{ | |
return $this->jsonApiSerializer->injectData($data, $rawIncludedData); | |
} | |
/** | |
* Hook for the serializer to modify the final list of includes. | |
* | |
* @param array $includedData | |
* @param array $data | |
* | |
* @return array | |
*/ | |
public function filterIncludes($includedData, $data) | |
{ | |
return $this->jsonApiSerializer->filterIncludes($includedData, $data); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment