ExceptionHandler
extends BaseExceptionHandler
in package
implements
ExceptionHandlerInterface
uses
ResponseTrait
Provides common functions for exception handlers, especially around displaying the output.
Tags
Table of Contents
Interfaces
Properties
- $codes : array<string, int>
- Allows child classes to override the status code that is used in their API.
- $config : Exceptions
- Config for debug exceptions.
- $format : string|null
- How to format the response data.
- $formatter : FormatterInterface|null
- Current Formatter instance. This is usually set by ResponseTrait::format
- $obLevel : int
- Nesting level of the output buffering mechanism
- $viewPath : string|null
- The path to the directory containing the cli and html error view directories.
- $request : RequestInterface|null
- ResponseTrait needs this.
- $response : ResponseInterface|null
- ResponseTrait needs this.
Methods
- __construct() : mixed
- handle() : void
- Determines the correct way to display the error.
- collectVars() : array<string|int, mixed>
- Gathers the variables that will be made available to the view.
- describeMemory() : string
- Describes memory usage in real-world units. Intended for use with memory_get_usage, etc.
- determineView() : string
- Determines the view to display based on the exception thrown, HTTP status code, whether an HTTP or CLI request, etc.
- fail() : ResponseInterface
- Used for generic failures that no custom methods exist for.
- failForbidden() : ResponseInterface
- Used when access is always denied to this resource and no amount of trying again will help.
- failNotFound() : ResponseInterface
- Used when a specified resource cannot be found.
- failResourceExists() : ResponseInterface
- Use when trying to create a new resource and it already exists.
- failResourceGone() : ResponseInterface
- Use when a resource was previously deleted. This is different than Not Found, because here we know the data previously existed, but is now gone, where Not Found means we simply cannot find any information about it.
- failServerError() : ResponseInterface
- Used when there is a server error.
- failTooManyRequests() : ResponseInterface
- Used when the user has made too many requests for the resource recently.
- failUnauthorized() : ResponseInterface
- Used when the client is either didn't send authorization information, or had bad authorization credentials. User is encouraged to try again with the proper information.
- failValidationError() : ResponseInterface
- Used when the data provided by the client cannot be validated.
- failValidationErrors() : ResponseInterface
- Used when the data provided by the client cannot be validated on one or more fields.
- format() : string|null
- Handles formatting a response. Currently, makes some heavy assumptions and needs updating! :)
- highlightFile() : bool|string
- Creates a syntax-highlighted version of a PHP file.
- maskSensitiveData() : array<string|int, mixed>
- Mask sensitive data in the trace.
- render() : void
- Given an exception and status code will display the error to the client.
- respond() : ResponseInterface
- Provides a single, simple method to return an API response, formatted to match the requested format, with proper content-type and status code.
- respondCreated() : ResponseInterface
- Used after successfully creating a new resource.
- respondDeleted() : ResponseInterface
- Used after a resource has been successfully deleted.
- respondNoContent() : ResponseInterface
- Used after a command has been successfully executed but there is no meaningful reply to send back to the client.
- respondUpdated() : ResponseInterface
- Used after a resource has been successfully updated.
- setResponseFormat() : $this
- Sets the format the response should be in.
- maskData() : array<string|int, mixed>|object
Properties
$codes
Allows child classes to override the status code that is used in their API.
protected
array<string, int>
$codes
= ['created' => 201, 'deleted' => 200, 'updated' => 200, 'no_content' => 204, 'invalid_request' => 400, 'unsupported_response_type' => 400, 'invalid_scope' => 400, 'temporarily_unavailable' => 400, 'invalid_grant' => 400, 'invalid_credentials' => 400, 'invalid_refresh' => 400, 'no_data' => 400, 'invalid_data' => 400, 'access_denied' => 401, 'unauthorized' => 401, 'invalid_client' => 401, 'forbidden' => 403, 'resource_not_found' => 404, 'not_acceptable' => 406, 'resource_exists' => 409, 'conflict' => 409, 'resource_gone' => 410, 'payload_too_large' => 413, 'unsupported_media_type' => 415, 'too_many_requests' => 429, 'server_error' => 500, 'unsupported_grant_type' => 501, 'not_implemented' => 501]
$config
Config for debug exceptions.
protected
Exceptions
$config
$format
How to format the response data.
protected
string|null
$format
= 'json'
Either 'json' or 'xml'. If null is set, it will be determined through content negotiation.
Tags
$formatter
Current Formatter instance. This is usually set by ResponseTrait::format
protected
FormatterInterface|null
$formatter
$obLevel
Nesting level of the output buffering mechanism
protected
int
$obLevel
$viewPath
The path to the directory containing the cli and html error view directories.
protected
string|null
$viewPath
= null
$request
ResponseTrait needs this.
private
RequestInterface|null
$request
= null
$response
ResponseTrait needs this.
private
ResponseInterface|null
$response
= null
Methods
__construct()
public
__construct(Exceptions $config) : mixed
Parameters
- $config : Exceptions
handle()
Determines the correct way to display the error.
public
handle(Throwable $exception, RequestInterface $request, ResponseInterface $response, int $statusCode, int $exitCode) : void
Parameters
- $exception : Throwable
- $request : RequestInterface
- $response : ResponseInterface
- $statusCode : int
- $exitCode : int
collectVars()
Gathers the variables that will be made available to the view.
protected
collectVars(Throwable $exception, int $statusCode) : array<string|int, mixed>
Parameters
- $exception : Throwable
- $statusCode : int
Return values
array<string|int, mixed>describeMemory()
Describes memory usage in real-world units. Intended for use with memory_get_usage, etc.
protected
static describeMemory(int $bytes) : string
Parameters
- $bytes : int
Tags
Return values
stringdetermineView()
Determines the view to display based on the exception thrown, HTTP status code, whether an HTTP or CLI request, etc.
protected
determineView(Throwable $exception, string $templatePath[, int $statusCode = 500 ]) : string
Parameters
- $exception : Throwable
- $templatePath : string
- $statusCode : int = 500
Return values
string —The filename of the view file to use
fail()
Used for generic failures that no custom methods exist for.
protected
fail(array<string|int, mixed>|string $messages[, int $status = 400 ][, string|null $code = null ][, string $customMessage = '' ]) : ResponseInterface
Parameters
- $messages : array<string|int, mixed>|string
- $status : int = 400
-
HTTP status code
- $code : string|null = null
-
Custom, API-specific, error code
- $customMessage : string = ''
Return values
ResponseInterfacefailForbidden()
Used when access is always denied to this resource and no amount of trying again will help.
protected
failForbidden([string $description = 'Forbidden' ][, string|null $code = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $description : string = 'Forbidden'
- $code : string|null = null
- $message : string = ''
Return values
ResponseInterfacefailNotFound()
Used when a specified resource cannot be found.
protected
failNotFound([string $description = 'Not Found' ][, string|null $code = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $description : string = 'Not Found'
- $code : string|null = null
- $message : string = ''
Return values
ResponseInterfacefailResourceExists()
Use when trying to create a new resource and it already exists.
protected
failResourceExists([string $description = 'Conflict' ][, string|null $code = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $description : string = 'Conflict'
- $code : string|null = null
- $message : string = ''
Return values
ResponseInterfacefailResourceGone()
Use when a resource was previously deleted. This is different than Not Found, because here we know the data previously existed, but is now gone, where Not Found means we simply cannot find any information about it.
protected
failResourceGone([string $description = 'Gone' ][, string|null $code = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $description : string = 'Gone'
- $code : string|null = null
- $message : string = ''
Return values
ResponseInterfacefailServerError()
Used when there is a server error.
protected
failServerError([string $description = 'Internal Server Error' ][, string|null $code = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $description : string = 'Internal Server Error'
-
The error message to show the user.
- $code : string|null = null
-
A custom, API-specific, error code.
- $message : string = ''
-
A custom "reason" message to return.
Return values
ResponseInterfacefailTooManyRequests()
Used when the user has made too many requests for the resource recently.
protected
failTooManyRequests([string $description = 'Too Many Requests' ][, string|null $code = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $description : string = 'Too Many Requests'
- $code : string|null = null
- $message : string = ''
Return values
ResponseInterfacefailUnauthorized()
Used when the client is either didn't send authorization information, or had bad authorization credentials. User is encouraged to try again with the proper information.
protected
failUnauthorized([string $description = 'Unauthorized' ][, string|null $code = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $description : string = 'Unauthorized'
- $code : string|null = null
- $message : string = ''
Return values
ResponseInterfacefailValidationError()
Used when the data provided by the client cannot be validated.
protected
failValidationError([string $description = 'Bad Request' ][, string|null $code = null ][, string $message = '' ]) : ResponseInterface
Use failValidationErrors instead
Parameters
- $description : string = 'Bad Request'
- $code : string|null = null
- $message : string = ''
Return values
ResponseInterfacefailValidationErrors()
Used when the data provided by the client cannot be validated on one or more fields.
protected
failValidationErrors(array<int, string>|string $errors[, string|null $code = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $errors : array<int, string>|string
- $code : string|null = null
- $message : string = ''
Return values
ResponseInterfaceformat()
Handles formatting a response. Currently, makes some heavy assumptions and needs updating! :)
protected
format([array<string|int, mixed>|string|null $data = null ]) : string|null
Parameters
- $data : array<string|int, mixed>|string|null = null
Return values
string|nullhighlightFile()
Creates a syntax-highlighted version of a PHP file.
protected
static highlightFile(string $file, int $lineNumber[, int $lines = 15 ]) : bool|string
Parameters
- $file : string
- $lineNumber : int
- $lines : int = 15
Tags
Return values
bool|stringmaskSensitiveData()
Mask sensitive data in the trace.
protected
maskSensitiveData(array<string|int, mixed> $trace, array<string|int, mixed> $keysToMask[, string $path = '' ]) : array<string|int, mixed>
Parameters
- $trace : array<string|int, mixed>
- $keysToMask : array<string|int, mixed>
- $path : string = ''
Return values
array<string|int, mixed>render()
Given an exception and status code will display the error to the client.
protected
render(Throwable $exception, int $statusCode[, string|null $viewFile = null ]) : void
Parameters
- $exception : Throwable
- $statusCode : int
- $viewFile : string|null = null
respond()
Provides a single, simple method to return an API response, formatted to match the requested format, with proper content-type and status code.
protected
respond([array<string|int, mixed>|string|null $data = null ][, int|null $status = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $data : array<string|int, mixed>|string|null = null
- $status : int|null = null
- $message : string = ''
Return values
ResponseInterfacerespondCreated()
Used after successfully creating a new resource.
protected
respondCreated([array<string|int, mixed>|string|null $data = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $data : array<string|int, mixed>|string|null = null
- $message : string = ''
Return values
ResponseInterfacerespondDeleted()
Used after a resource has been successfully deleted.
protected
respondDeleted([array<string|int, mixed>|string|null $data = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $data : array<string|int, mixed>|string|null = null
- $message : string = ''
Return values
ResponseInterfacerespondNoContent()
Used after a command has been successfully executed but there is no meaningful reply to send back to the client.
protected
respondNoContent([string $message = 'No Content' ]) : ResponseInterface
Parameters
- $message : string = 'No Content'
Return values
ResponseInterfacerespondUpdated()
Used after a resource has been successfully updated.
protected
respondUpdated([array<string|int, mixed>|string|null $data = null ][, string $message = '' ]) : ResponseInterface
Parameters
- $data : array<string|int, mixed>|string|null = null
- $message : string = ''
Return values
ResponseInterfacesetResponseFormat()
Sets the format the response should be in.
protected
setResponseFormat([string|null $format = null ]) : $this
Parameters
- $format : string|null = null
-
Response format
Tags
Return values
$thismaskData()
private
maskData(array<string|int, mixed>|object $args, array<string|int, mixed> $keysToMask[, string $path = '' ]) : array<string|int, mixed>|object
Parameters
- $args : array<string|int, mixed>|object
- $keysToMask : array<string|int, mixed>
- $path : string = ''