- 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;
{
"_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"
}
]
}
}
<?php
echo $parent->getXML()->asXML();
<?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>