mhndev/hal

0.6.0 2017-11-20 07:59 UTC

This package is auto-updated.

Last update: 2024-09-06 09:39:39 UTC


README

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

Php Hal 对象

从数组数据生成 php hal 对象

此包目前仅支持 json,不支持 xml

示例用法

$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();