mhndev/hal

0.6.0 2017-11-20 07:59 UTC

This package is auto-updated.

Last update: 2024-04-06 08:46:46 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License composer.lock

Php Hal Object

generating php hal object from array data

this package currently just supports json and not xml

Sample usage:

$post = [
    'title' => 'sample post title',
    'text' => 'post body goes here ...',
];

$user = [
    'username' => 'mhndev',
    'mobile' => '09124917706',
    'email' => 'majid8911303@gmail.com'
];


$comments = [
    [
        'text' => 'Hi',
        'uid'  => 12
    ],
    [
        'text' => 'OK',
        'uid'  => 14
    ],
    [
        'text' => 'NOK',
        'uid'  => 10
    ]
];

$tags = [
    'tag1', 'tag2', 'tag3'
];

$profile = [
    'avatar' => 'http://google.com/inja.jpeg',
    'name' => 'majid',
    'username' => 'mhndev',
    'bio' => 'user biography goes here ...'
];



$self_link = new \mhndev\hal\Link('self', 'http://google.com');
$next_link = new \mhndev\hal\Link('next', 'http://google.com');

$postResource = new \mhndev\hal\Resource($post);

$profileResource = new \mhndev\hal\Resource($profile);
$profileResource->addLink($self_link);


$userResource = new \mhndev\hal\Resource($user);

$userResource->addEmbeddedResource($profileResource, 'profile');

$tagsResource = new \mhndev\hal\Resource($tags);

$request = \Slim\Http\Request::createFromGlobals([]);


$commentsResource = new \mhndev\hal\Paginated($comments, 5 , 10, $request);



$postResource->addEmbeddedResource($userResource, 'user');
$postResource->addEmbeddedResource($tagsResource, 'tags');
$postResource->addEmbeddedResource($commentsResource, 'comments');

$postResource->addLink($next_link);
$postResource->addLink($self_link);

header('Content-Type: application/json');


$presenter = new \mhndev\hal\Presenter($postResource);

var_dump((new \mhndev\hal\Presenter($postResource))->asArray());die();


echo $presenter->asJson();