1. Go to this page and download the library: Download nuxnik/collection-plus-json library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
nuxnik / collection-plus-json example snippets
$test = new \CollectionPlusJson\Collection('http://api.test.io');
echo json_encode($test->output());
//Build the collection object
$colors = new Collection('http://api.colors.io/');
//Add a Link to the collection object
$colors->addLink(new Link($colors->getHref()->extend('rss'), 'feed', 'rss-feed', '', 'Subscribe to our RSS feed!'));
//Build an item
$color1 = new Item($colors->getHref()->extend('1'));
$color1->addData('id', '1', 'This is the color id.')
->addData('hexValue', '#9932CC', 'This is the color in hex format.');
// or add data with dynamic setter
$color1->sethumanValue('DarkOrchid', 'This is the color in human readable format.');
$color1->addLink(new Link('http://www.w3schools.com/tags/ref_colornames.asp', 'source'));
$color1->addLink(new Link('http://www.w3schools.com/tags/ref_color_tryit.asp?hex=9932CC', 'colorTest'));
//Build a second item
$color2 = new Item($colors->getHref()->extend('2'));
$color2->addData('id', '2', 'This is the color id.')
->addData('hexValue', '#FFFFF0', 'This is the color in hex format.');
// or add data with dynamic setter
$color2->sethumanValue('DarkOrchid', 'This is the color in human readable format.');
$color2->addLink(new Link('http://www.w3schools.com/tags/ref_colornames.asp', 'source'));
$color2->addLink(new Link('http://www.w3schools.com/tags/ref_color_tryit.asp?hex=FFFFF0', 'colorTest'));
//Add both items
$colors->addItems([$color1, $color2]);
//Build a collection query
$query = new Query($colors->getHref()->extend('search'), 'search');
$query->addData('search');
$colors->addQuery($query);
//Set the collection template
$template = new Template();
$template->addData('id', 'This is the color id.')
->addData('hexValue', 'This is the color in hex format.')
->addData('humanValue', 'This is the color in human readable format.')
->addData('colorTest', 'Link to test how your color looks with other colors.');
// or add data with dynamic setter
$template->setSource('Link to colors source');
$colors->setTemplate($template);
//Set an error
$error = new Error('error-test', 'ABC123', 'This is a test error. Server has encountered a problem and could not process your request, please try later.');
$colors->setError($error);
//Send response
$app->response->headers->set('Content-Type', 'application/vnd.collection+json');
echo json_encode($colors->output());
/*
Output would be:
{
"collection": {
"version": "1.0.1",
"href": "http://api.colors.io/",
"links": [
{
"href": "http://api.colors.io/rss",
"rel": "feed",
"prompt": "Subscribe to our RSS feed!",
"name": "rss-feed",
}
],
"items": [
{
"href": "http://api.colors.io/1",
"data": [
{
"name": "id",
"value": "1",
"prompt": "This is the color id."
},
{
"name": "hexValue",
"value": "#9932CC",
"prompt": "This is the color in hex format."
},
{
"name": "humanValue",
"value": "DarkOrchid",
"prompt": "This is the color in human readable format."
}
],
"links": [
{
"href": "http://www.w3schools.com/tags/ref_colornames.asp",
"rel": "source",
},
{
"href": "http://www.w3schools.com/tags/ref_color_tryit.asp?hex=9932CC",
"rel": "colorTest",
}
]
},
{
"href": "http://api.colors.io/2",
"data": [
{
"name": "id",
"value": "2",
"prompt": "This is the color id."
},
{
"name": "hexValue",
"value": "#FFFFF0",
"prompt": "This is the color in hex format."
},
{
"name": "humanValue",
"value": "Ivory",
"prompt": "This is the color in human readable format."
}
],
"links": [
{
"href": "http://www.w3schools.com/tags/ref_colornames.asp",
"rel": "source",
},
{
"href": "http://www.w3schools.com/tags/ref_color_tryit.asp?hex=FFFFF0",
"rel": "colorTest",
}
]
}
],
"queries": [
{
"href": "http://api.colors.io/search",
"rel": "search",
"data": [
{
"name": "search",
"value": null,
"prompt": ""
}
]
}
],
"template": [
{
"name": "id",
"value": "",
"prompt": "This is the color id."
},
{
"name": "hexValue",
"value": "",
"prompt": "This is the color in hex format."
},
{
"name": "humanValue",
"value": "",
"prompt": "This is the color in human readable format."
},
{
"name": "source",
"value": "",
"prompt": "Link to colors source."
},
{
"name": "colorTest",
"value": "",
"prompt": "Link to test how your color looks with other colors."
}
],
"error": {
"title": "error-test",
"code": "ABC-123",
"message": "This is a test error. Server has encountered a problem and could not process your request, please try later."
}
}
}
// init Collection object with json string to parse
$collection = new Collection(json_decode($collectionJson, true));
// get the first item
$item = $collection->getFirstItem();
// get a fake transfer object
$entity = new ExampleEntity();
// add the data with dynamic getters from item object
$entity->setFoo($item->getFoo());
$entity->setBar($item->getBar());
// save to example database
$repo->persist($entity);
$repo->flush();
// init Template object with json string to parse
$template = new Template(json_decode($collectionJsonTemplate, true));
// get a fake transfer object
$entity = new ExampleEntity();
// add the data with dynamic getters from template object
$entity->setFoo($template->getFoo());
$entity->setBar($template->getBar());
// save to example database
$repo->persist($entity);
$repo->flush();
// init the http client and collection class
$href = 'http://api.colors.io';
$client = new GuzzleClient(['base_uri' => $href]);
$collection = new \CollectionPlusJson\Collection( $href, $client );
// get data from endpoint
$collection = $collection->get();
// iterate through the items
$items = $collection->getItems();
foreach( $items as $item) {
echo $item->getId() . "\n";
}
// init the http client and collection class
$href = 'http://api.colors.io';
$client = new GuzzleClient(['base_uri' => $href]);
$collection = new \CollectionPlusJson\Collection( $href, $client );
// get data from endpoint
$collection = $collection->get('/color2');
// show the hex value
$item = $collection->getFirstItem();
echo $item->getHexValue() . "\n";
// update the color
$item->setHexValue('#FF0000');
$item->setHumanValue('red');
// import the item to the collection template
$collection->getTemplate()->importItem($item);
// put/save to server
$collection = $collection->put();
// show the hex value
$item = $collection->getFirstItem();
echo $item->getHexValue() . "\n";
// init the http client and collection class
$href = 'http://api.colors.io';
$client = new GuzzleClient(['base_uri' => $href]);
$collection = new \CollectionPlusJson\Collection( $href, $client );
// get data from endpoint
$collection = $collection->get();
// enter values into the template
$tpl = $collection->getTemplate();
$tpl->setHexValue('#00FF00');
$tpl->setHumanValue('green');
// post/save to server
$collection = $collection->post();
// show the hex value
$item = $collection->getFirstItem();
echo $item->getHexValue() . "\n";
// delete the item
$item->delete();
// init the http client and collection class
$href = 'http://api.colors.io';
$client = new GuzzleClient(['base_uri' => $href]);
$collection = new \CollectionPlusJson\Collection( $href, $client );
// get data from endpoint
$item = $collection->get()->getFirstItem()
$collection = $item->follow();
echo $collection->getFirstItem()->getHumanValue();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.