A PHP implementation of HAL http://stateless.co/hal_specification.html
PHP
Latest commit e988819 Apr 25, 2015 @hjr3 hjr3 Merge pull request #19 from hjr3/namespace-fix
Specify namespace character in autoloader
Permalink
Failed to load latest commit information.
library/Hal Add SelfLink to ensure proper Hal output Oct 28, 2014
scripts Updated pear package details and VERSION meta Apr 3, 2013
tests Add SelfLink to ensure proper Hal output Oct 28, 2014
.gitignore More CS fixes for PSR-2 Mar 27, 2013
.travis.yml
CHANGELOG
LICENSE-2.0.txt
VERSION Updated pear package details and VERSION meta Apr 3, 2013
build.xml updated build.xml for ci and testing steps Jul 8, 2012
composer.json
package.xml
readme.md Added bitdeli to readme Dec 16, 2013

readme.md

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