mhndev / hal
0.6.0
2017-11-20 07:59 UTC
Requires
- php: >=7.1
- psr/http-message: ^1.0
Requires (Dev)
- phpunit/phpunit: 6.*
- slim/http: ^0.3
README
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();