Resources
Resources are objects that represent data, and have knowledge of a “Transformer”, which is an object or callback that will know how to output the data.
Two types of resource exist:
- League\Fractal\Resource\Item - A singular resource, probably one entry in a data store
- League\Fractal\Resource\Collection - A collection of resources
The Item and Collection constructors will take any kind of data you wish to send it
as the first argument, and then a “transformer” as the second argument.
These examples use callback transformers instead of creating classes, purely for demonstrative purposes.
Item Example
use Acme\Model\Book;
use League\Fractal;
$book = Book::find($id);
$resource = new Fractal\Resource\Item($book, function(Book $book) {
    return [
        'id'      => (int) $book->id,
        'title'   => $book->title,
        'year'    => (int) $book->yr,
        'links'   => [
            'self' => '/books/'.$book->id,
        ]
    ];
});
Collection Example
use Acme\Model\Book;
use League\Fractal;
$books = Book::all();
$resource = new Fractal\Resource\Collection($books, function(Book $book) {
    return [
        'id'    => (int) $book->id,
        'title' => $book->title,
        'year'  => (int) $book->yr,
        'links' => [
            'self' => '/books/'.$book->id,
        ]
    ];
});
In this example $books is an array of Acme\Model\Book instances, or a collection class
that implemented ArrayIterator.
