PhlyRestfully allows you to create RESTful JSON APIs that adhere to Hypermedia Application Language. For error handling, it uses API-Problem.
The pieces you need to implement, work with, or understand are:
All API calls are handled by PhlyRestfully\ResourceController, which in turn composes a PhlyRestfully\Resource object and calls methods on it. The various methods of the controller will return either PhlyRestfully\ApiProblem results on error conditions, or, on success, a PhlyRestfully\HalResource or PhlyRestfully\HalCollection instance; these are then composed into a PhlyRestfully\View\RestfulJsonModel.
If the MVC detects a PhlyRestfully\View\RestfulJsonModel during rendering, it will select PhlyRestfully\View\RestfulJsonRenderer. This, with the help of the PhlyRestfully\Plugin\HalLinks plugin, will generate an appropriate payload based on the object composed, and ensure the appropriate Content-Type header is used.
If a PhlyRestfully\HalCollection is detected, and the renderer determines that it composes a Zend\Paginator\Paginator instance, the HalLinks plugin will also generate pagination relational links to render in the payload.