Skip to content

Instantly share code, notes, and snippets.

@prolic
Created October 1, 2015 10:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save prolic/b046a89ee048783576dc to your computer and use it in GitHub Desktop.
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
<?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