avalanche-development / crash-pad
Requires
- php: >=5.6.0
- avalanche-development/peel: ^0.3
- guzzlehttp/psr7: ^1.3
- psr/http-message: ^1.0
- psr/log: ^1.0
Requires (Dev)
- codeclimate/php-test-reporter: ^0.3
- phpunit/phpunit: ^5.5
This package is not auto-updated.
Last update: 2024-10-27 01:24:00 UTC
README
Error handler that utilizes peel exceptions to standardize responses.
Installation
It's recommended that you use Composer to install crash-pad.
$ composer require avalanche-development/crash-pad
crash-pad requires PHP 5.6 or newer.
Usage
This handler works best with peel. It can work without, but without the HttpErrorInterface exceptions all of the responses are going to default as 500 Server Errors.
Depending on the framework you're using, this can be hooked up in a few different ways. In Slim you'd attach it to the Slim\Container
. I'm going to be biased and show this in Talus.
$talus = new Talus([...]); $talus->setErrorHandler(new AvalancheDevelopment\CrashPad\ErrorHandler);
This will listen for exceptions that jump out of the call stack and return appropriate responses. For example, if you have some middleware like so...
function someMiddleware($request, $response, $next) { $body = (string) $request->getBody(); $body = json_decode($value); if (json_last_error() !== JSON_ERROR_NONE) { throw new AvalancheDevelopment\Peel\HttpError\BadRequest('Invalid JSON'); } // etc }
The error handler will detect the AvalancheDevelopment\Peel\HttpErrorInterface
exception and return a response like so...
{ "statusCode": 400, "error": "Bad Request", "message": "Invalid JSON" }
All responses will include these three fields, plus the appropriate headers. Any exceptions that do not implement the HttpErrorEnterface
will respond the default 500.
Development
This library is in active development. Some of the error responses may include metadata moving forward.
Tests
To execute the test suite, you'll need phpunit (and to install package with dev dependencies).
$ phpunit
License
crash-pad is licensed under the MIT license. See License File for more information.