zircote / hal
A PHP implementation of HAL http://stateless.co/hal_specification.html
Installs: 211 025
Dependents: 2
Suggesters: 0
Security: 0
Stars: 93
Watchers: 4
Forks: 6
Open Issues: 3
Requires
- php: >=5.3.3
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-12-12 00:21:22 UTC
README
- HAL IETF Draft
- HAL Specification
- Hal Specification on Github
- JSON Linking With HAL
- Linking In Json
- Examples of HAL
- HAL on Google Groups
<?php use Hal\Resource, Hal\Link; /* Create a new Resource Parent */ $parent = new Resource('/dogs'); /* Add any relevent links */ $parent->setLink(new Link('/dogs?q={text}', 'search')); $dogs[1] = new Resource('/dogs/1'); $dogs[1]->setData( array( 'id' => '1', 'name' => 'tiber', 'color' => 'black' ) ); $dogs[2] = new Resource( '/dogs/2',array( 'id' => '2', 'name' => 'sally', 'color' => 'white' ) ); $dogs[3] = new Resource( '/dogs/3',array( 'id' => '3', 'name' => 'fido', 'color' => 'gray' ) ); /* Add the embedded resources */ foreach ($dogs as $dog) { $parent->setEmbedded('dog', $dog); } echo (string) $parent;
Result:
{ "_links":{ "self":{ "href":"\/dogs" }, "search":{ "href":"\/dogs?q={text}" } }, "_embedded":{ "dog":[ { "_links":{ "self":{ "href":"\/dogs\/1" } }, "id":"1", "name":"tiber", "color":"black" }, { "_links":{ "self":{ "href":"\/dogs\/2" } }, "id":"2", "name":"sally", "color":"white" }, { "_links":{ "self":{ "href":"\/dogs\/3" } }, "id":"3", "name":"fido", "color":"gray" } ] } }
Generating XML output
<?php echo $parent->getXML()->asXML();
Result:
<?xml version="1.0"?> <resource href="/dogs"> <link href="/dogs?q={text}" rel="search" /> <resource href="/dogs/1" rel="dog"> <id>1</id> <name>tiber</name> <color>black</color> </resource> <resource href="/dogs/2" rel="dog"> <id>2</id> <name>sally</name> <color>white</color> </resource> <resource href="/dogs/3" rel="dog"> <id>3</id> <name>fido</name> <color>gray</color> </resource> </resource>