1. Go to this page and download the library: Download rstgroup/json-api-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rstgroup / json-api-php example snippets
use RstGroup\JsonApiPhp\EntityInterface;
use RstGroup\JsonApiPhp\Resource;
use RstGroup\JsonApiPhp\Relation;
use RstGroup\JsonApiPhp\Writer;
// define posts resource
$postsResource = new Resource();
$postsResource->setCollectionName('posts');
$postsResource->setName('post');
$postsResource->setHref('/posts/{posts.id}');
// create post entities
$post1 = new Post(1, 'first post');
$post2 = new Post(2, 'second awesome post');
$postsResource->setEntities(array($post1, $post2));
// render result
$writer = new Writer();
echo json_encode($writer->write($postsResource));
use RstGroup\JsonApiPhp\EntityInterface;
use RstGroup\JsonApiPhp\Resource;
use RstGroup\JsonApiPhp\Relation;
use RstGroup\JsonApiPhp\Writer;
// authors
$authorsResource = new Resource();
$authorsResource->setCollectionName('authors');
$authorsResource->setName('author');
$authorsResource->setHref('/authors/{authors.id}');
// posts
$postsResource = new Resource();
$postsResource->setCollectionName('posts');
$postsResource->setName('post');
$postsResource->setHref('/posts/{posts.id}');
class Author implements EntityInterface
{
protected $id;
protected $firstName;
protected $lastName;
public function __construct($id, $firstName, $lastName)
{
$this->id = $id;
$this->firstName = $firstName;
$this->lastName = $lastName;
}
public function getId()
{
return $this->id;
}
public function toArray()
{
return array(
'firstName' => $this->firstName,
'lastName' => $this->lastName,
);
}
}
class Post implements EntityInterface
{
protected $id;
protected $text;
public function __construct($id, $text)
{
$this->id = $id;
$this->text = $text;
}
public function getId()
{
return $this->id;
}
public function toArray()
{
return array(
'text' => $this->text,
);
}
}
...
$author1 = new Author(10, 'John', 'Doe');
$author2 = new Author(20, 'Adam', 'Novak');
$authorsResource->setEntities(array($author1, $author2));
$writer = new Writer();
$result = $writer->write($authorsResource);
echo json_encode($result);
class Post implements EntityInterface
{
...
/**
* @var Author
*/
protected $author;
/**
* @param Author $author
* @return $this
*/
public function setAuthor(Author $author)
{
$this->author = $author;
return $this;
}
/**
* @return Author
*/
public function getAuthor()
{
return $this->author;
}
...
}
...
$author1 = new Author(10, 'John', 'Doe');
$post1 = new Post(1, 'first post');
$post1->setAuthor($author1);
$post2 = new Post(2, 'second awesome post');
$post2->setAuthor($author1);
$postsResource->setEntities(array($post1, $post2));
$writer->setLinkForm(Writer::AS_ID);
$writer->attachResourceObjectsLinks(false);
class Author implements EntityInterface
{
...
/**
* @var Post[]
*/
protected $posts;
/**
* @param Post[] $posts
* @return $this
*/
public function setPosts(array $posts)
{
$this->posts = $posts;
return $this;
}
/**
* @return Post[]
*/
public function getPosts()
{
return $this->posts;
}
...
}
$post1 = new Post(1, 'first post');
$post2 = new Post(2, 'second awesome post');
$author1 = new Author(10, 'John', 'Doe');
$author1->setPosts(array($post1, $post2));
$authorsResource->setEntities(array($author1));
$authorsResource->addRelation(new Relation(Relation::TO_MANY, $postsResource));
$writer = new Writer();
echo json_encode($writer->write($authorsResource));
$author1 = new Author(10, 'John', 'Doe');
...
$post1 = new Post(1, 'first post');
$post2 = new Post(2, 'second awesome post');
$writer->setAttachLinked(true);
$authorTemplate = new Template('posts.author', '/authors/{posts.author.id}', 'authors');
$postsResource->addTemplate($authorTemplate);