Download the PHP package nilportugues/haljson without Composer
On this page you can find all versions of the php package nilportugues/haljson. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download nilportugues/haljson
More information about nilportugues/haljson
Files in nilportugues/haljson
Package haljson
Short Description HAL+JSON & HAL+XML API transformer outputting valid API responses.
License MIT
Homepage http://nilportugues.com
Informations about the package haljson
HAL+JSON & HAL+XML API Transformer
- Installation
- Mapping
- 2.1 Mapping with arrays
- 2.2 Mapping with Mapping class
- HAL Serialization
- 3.1 HAL+JSON
- 3.2 HAL+XML
- HAL Paginated Resource
- PSR-7 Response objects
1. Installation
Use Composer to install the package:
2. Mapping
Given a PHP Object, and a series of mappings, the HAL+JSON and HAL+XML API transformer will represent the given data following the https://tools.ietf.org/html/draft-kelly-json-hal-07
specification draft.
For instance, given the following piece of code, defining a Blog Post and some comments:
We will have to map all the involved classes. This can be done as one single array, or a series of Mapping classes.
2.1 Mapping with arrays
Mapping involved classes using arrays is done as follows:
2.2 Mapping with Mapping class
In order to map with Mapping class, you need to create a new class for each involved class.
This mapping fashion scales way better than using an array.
All Mapping classes will extend the \NilPortugues\Api\Mappings\HalMapping
interface.
3. HAL Serialization
Calling the transformer will output a valid HAL response using the correct formatting:
3.1 HAL+JSON
Output:
3.2 HAL+XML
For XML output use the sample code but using the XML transformer instead:
Output:
4. HAL Paginated Resource
A pagination object to easy the usage of this package is provided.
For both XML and JSON output, use the HalPagination
object to build your paginated representation of the current resource.
Methods provided by HalPagination
are as follows:
setSelf($self)
setFirst($first)
setPrev($prev)
setNext($next)
setLast($last)
setCount($count)
setTotal($total)
setEmbedded(array $embedded)
In order to use it, create a new HalPagination instance, use the setters and pass the instance to the serialize($value)
method of the serializer.
Everything else will be handled by serializer itself. Easy as that!
5. Response objects
The following PSR-7 Response objects providing the right headers and HTTP status codes are available.
Its use is optional and are provided as a starting point.
NilPortugues\Api\Hal\Http\Message\ErrorResponse($body)
NilPortugues\Api\Hal\Http\Message\ResourceCreatedResponse($body)
NilPortugues\Api\Hal\Http\Message\ResourceDeletedResponse($body)
NilPortugues\Api\Hal\Http\Message\ResourceNotFoundResponse($body)
NilPortugues\Api\Hal\Http\Message\ResourcePatchErrorResponse($body)
NilPortugues\Api\Hal\Http\Message\ResourcePostErrorResponse($body)
NilPortugues\Api\Hal\Http\Message\ResourceProcessingResponse($body)
NilPortugues\Api\Hal\Http\Message\ResourceUpdatedResponse($body)
NilPortugues\Api\Hal\Http\Message\Response($body)
NilPortugues\Api\Hal\Http\Message\UnsupportedActionResponse($body)
Quality
To run the PHPUnit tests at the command line, go to the tests directory and issue phpunit.
This library attempts to comply with PSR-1, PSR-2, PSR-4 and PSR-7.
If you notice compliance oversights, please send a patch via Pull Request.
Contribute
Contributions to the package are always welcome!
- Report any bugs or issues you find on the issue tracker.
- You can grab the source code at the package's Git repository.
Support
Get in touch with me using one of the following means:
- Emailing me at [email protected]
- Opening an Issue
Authors
License
The code base is licensed under the MIT license.