src/Transformers/Transformer.php
<?php namespace Musonza\Chat\Transformers; use League\Fractal;use League\Fractal\Manager;use League\Fractal\Pagination\IlluminatePaginatorAdapter;use League\Fractal\Resource\Collection;use League\Fractal\Resource\Item;use League\Fractal\Serializer\ArraySerializer; abstract class Transformer extends Fractal\TransformerAbstract{ public function transformCollection($items, $paginator = null, $meta = null) { $resource = new Collection($items, $this); if ($paginator) { $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); } if ($meta) { $resource->setMeta($meta); } return $this->fractalManager($resource); } public function fractalManager($resource) { $fractal = new Manager(); $fractal->setSerializer(new ArraySerializer()); if ($includes = request('include', null)) { $fractal->parseIncludes($includes); } return $fractal->createData($resource)->toArray(); } public function transformItem($item) { $resource = new Item($item, $this); return $this->fractalManager($resource); } abstract public function transform($item);}