1. Go to this page and download the library: Download nilportugues/json-api 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/ */
nilportugues / json-api example snippets
$post = new Post(
new PostId(9),
'Hello World',
'Your first post',
new User(
new UserId(1),
'Post Author'
),
[
new Comment(
new CommentId(1000),
'Have no fear, sers, your king is safe.',
new User(new UserId(2), 'Barristan Selmy'),
[
'created_at' => (new DateTime('2015/07/18 12:13:00'))->format('c'),
'accepted_at' => (new DateTime('2015/07/19 00:00:00'))->format('c'),
]
),
]
);
namespace AcmeProject\Infrastructure\Api\Mappings;
use NilPortugues\Api\Mappings\JsonApiMapping;
class PostMapping implements JsonApiMapping
{
/**
* {@inhertidoc}
*/
public function getClass()
{
return \Post::class;
}
/**
* {@inheritdoc}
*/
public function getAlias()
{
return 'Message';
}
/**
* {@inheritdoc}
*/
public function getAliasedProperties() {
return [
'author' => 'author',
'title' => 'headline',
'content' => 'body',
];
}
/**
* {@inheritdoc}
*/
public function getHideProperties(){
return [];
}
/**
* {@inheritdoc}
*/
public function getIdProperties() {
return [
'postId',
];
}
/**
* {@inheritdoc}
*/
public function getUrls()
{
return [
'self' => 'http://example.com/posts/{postId}',
'comments' => 'http://example.com/posts/{postId}/comments'
];
}
/**
* {@inheritdoc}
*/
public function getRelationships()
{
return [
'author' => [ //this key must match with the property or alias of the same name in Post class.
'related' => 'http://example.com/posts/{postId}/author',
'self' => 'http://example.com/posts/{postId}/relationships/author',
]
];
}
/**
* {@inheritdoc}
*/
public function getRequiredProperties()
{
return ['author', 'title', 'body'];
}
}
namespace AcmeProject\Infrastructure\Api\Mappings;
use NilPortugues\Api\Mappings\JsonApiMapping;
class PostIdMapping implements JsonApiMapping
{
/**
* {@inhertidoc}
*/
public function getClass()
{
return \PostId::class;
}
/**
* {@inheritdoc}
*/
public function getAlias()
{
return '';
}
/**
* {@inheritdoc}
*/
public function getAliasedProperties() {
return [],
}
/**
* {@inheritdoc}
*/
public function getHideProperties(){
return [];
}
/**
* {@inheritdoc}
*/
public function getIdProperties()
return [
'postId',
];
}
/**
* {@inheritdoc}
*/
public function getUrls()
{
return [
'self' => 'http://example.com/posts/{postId}',
];
}
/**
* {@inheritdoc}
*/
public function getRelationships()
{
return [
'comment' => [ //this key must match with the property or alias of the same name in PostId class.
'self' => 'http://example.com/posts/{postId}/relationships/comments',
],
],
];
}
/**
* {@inheritdoc}
*/
public function getRequiredProperties()
{
return [];
}
}
namespace AcmeProject\Infrastructure\Api\Mappings;
use NilPortugues\Api\Mappings\JsonApiMapping;
class UserMapping implements JsonApiMapping
{
/**
* {@inhertidoc}
*/
public function getClass()
{
return \User::class;
}
/**
* {@inheritdoc}
*/
public function getAlias()
{
return '';
}
/**
* {@inheritdoc}
*/
public function getAliasedProperties() {
return [];
}
/**
* {@inheritdoc}
*/
public function getHideProperties(){
return [];
}
/**
* {@inheritdoc}
*/
public function getIdProperties()
return [
'userId',
];
}
/**
* {@inheritdoc}
*/
public function getUrls()
{
return [
'self' => 'http://example.com/users/{userId}',
'friends' => 'http://example.com/users/{userId}/friends',
'comments' => 'http://example.com/users/{userId}/comments',
];
}
/**
* {@inheritdoc}
*/
public function getRequiredProperties()
{
return [];
}
}
namespace AcmeProject\Infrastructure\Api\Mappings;
use NilPortugues\Api\Mappings\JsonApiMapping;
class UserIdMapping implements JsonApiMapping
{
/**
* {@inhertidoc}
*/
public function getClass()
{
return \UserId::class;
}
/**
* {@inheritdoc}
*/
public function getAlias()
{
return '';
}
/**
* {@inheritdoc}
*/
public function getAliasedProperties() {
return [];
}
/**
* {@inheritdoc}
*/
public function getHideProperties(){
return [];
}
/**
* {@inheritdoc}
*/
public function getIdProperties()
return ['userId'];
}
/**
* {@inheritdoc}
*/
public function getUrls()
{
return [
'self' => 'http://example.com/users/{userId}',
'friends' => 'http://example.com/users/{userId}/friends',
'comments' => 'http://example.com/users/{userId}/comments',
];
}
/**
* {@inheritdoc}
*/
public function getRequiredProperties()
{
return [];
}
}
namespace AcmeProject\Infrastructure\Api\Mappings;
use NilPortugues\Api\Mappings\JsonApiMapping;
class CommentMapping implements JsonApiMapping
{
/**
* {@inhertidoc}
*/
public function getClass()
{
return \Comment::class;
}
/**
* {@inheritdoc}
*/
public function getAlias()
{
return '';
}
/**
* {@inheritdoc}
*/
public function getAliasedProperties() {
return [];
}
/**
* {@inheritdoc}
*/
public function getHideProperties(){
return [];
}
/**
* {@inheritdoc}
*/
public function getIdProperties()
return [ 'commentId',];
}
/**
* {@inheritdoc}
*/
public function getUrls()
{
return [
'self' => 'http://example.com/comments/{commentId}',
];
}
/**
* {@inheritdoc}
*/
public function getRelationships()
{
return [
'post' => [ //this key must match with the property or alias of the same name in Comment class.
'self' => 'http://example.com/posts/{postId}/relationships/comments',
]
];
}
/**
* {@inheritdoc}
*/
public function getRequiredProperties()
{
return [];
}
}
namespace AcmeProject\Infrastructure\Api\Mappings;
use NilPortugues\Api\Mappings\JsonApiMapping;
class CommentId implements JsonApiMapping
{
/**
* {@inhertidoc}
*/
public function getClass()
{
return \CommentId::class;
}
/**
* {@inheritdoc}
*/
public function getAlias()
{
return '';
}
/**
* {@inheritdoc}
*/
public function getAliasedProperties() {
return [];
}
/**
* {@inheritdoc}
*/
public function getHideProperties(){
return [];
}
/**
* {@inheritdoc}
*/
public function getIdProperties() {
return [ 'commentId', ];
}
/**
* {@inheritdoc}
*/
public function getUrls()
{
return [
'self' => 'http://example.com/comments/{commentId}',
];
}
/**
* {@inheritdoc}
*/
public function getRelationships()
{
return [
'post' => [ //this key must match with the property or alias of the same name in CommentId class.
'self' => 'http://example.com/posts/{postId}/relationships/comments',
]
];
}
/**
* {@inheritdoc}
*/
public function getRequiredProperties()
{
return [];
}
}
use NilPortugues\Api\JsonApi\JsonApiSerializer;
use NilPortugues\Api\JsonApi\JsonApiTransformer;
use NilPortugues\Api\JsonApi\Http\Message\Response;
use NilPortugues\Api\Mapping\Mapper;
$mappings = [
\AcmeProject\Infrastructure\Api\Mappings\PostMapping::class,
\AcmeProject\Infrastructure\Api\Mappings\PostIdMapping::class,
\AcmeProject\Infrastructure\Api\Mappings\UserMapping::class,
\AcmeProject\Infrastructure\Api\Mappings\UserIdMapping::class,
\AcmeProject\Infrastructure\Api\Mappings\CommentMapping::class,
\AcmeProject\Infrastructure\Api\Mappings\CommentId::class,
];
$mapper = new Mapper($mappings);
$transformer = new JsonApiTransformer($mapper);
$serializer = new JsonApiSerializer($transformer);
echo $serializer->serialize($post);
namespace \NilPortugues\Api\JsonApi\Http\Request;
class Request
{
public function __construct(ServerRequestInterface $request = null) { ... }
public function getIncludedRelationships() { ... }
public function getSort() { ... }
public function getPage() { ... }
public function getFilters() { ... }
public function getFields() { ... }
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.