Skip to content

zircote/Hal

Repository files navigation

Hal

Build Status

<?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>

Bitdeli Badge