Render an array (or HAL object) to a JSON/XML/HTML PSR-7 Response based on a PSR-7 Request's Accept header.
composer require akrabat/rka-content-type-renderer
// given:
// $request instanceof Psr\Http\Message\RequestInterface
// $response instanceof Psr\Http\Message\ResponseInterface
$data = [
'items' => [
[
'name' => 'Alex',
'is_admin' => true,
],
[
'name' => 'Robin',
'is_admin' => false,
],
],
];
$renderer = new RKA\ContentTypeRenderer\Renderer();
$response = $renderer->render($request, $response, $data);
return $response->withStatus(200);
The constructor takes a parameter, $pretty
that defaults to true
. Set to false
to disable pretty printing.
This component also supports nocarrier/hal objects with the HalRenderer
:
$hal = new Nocarrier\Hal(
'/foo',
[
'items' => [
[
'name' => 'Alex',
'is_admin' => true,
],
[
'name' => 'Robin',
'is_admin' => false,
],
],
]
);
$renderer = new RKA\ContentTypeRenderer\HalRenderer();
$response = $renderer->render($request, $response, $hal);
return $response->withStatus(200);
This component also supports crell/ApiProblem objects with the ApiProblemRenderer
:
$problem = new Crell\ApiProblem("Something unexpected happened");
$renderer = new RKA\ContentTypeRenderer\ApiProblemRenderer();
$response = $renderer->render($request, $response, $problem);
return $response->withStatus(500);
If you have an array of objects, then the renderer will still work as long as the objects implement PHP's JsonSerializable interface.
- Code style:
$ phpcs
- Unit tests:
$ phpunit
- Code coverage:
$ phpunit --coverage-html ./build