ExceptionHandler
in package
ExceptionHandler converts an exception to a Response object.
It is mostly useful in debug mode to replace the default PHP/XDebug output with something prettier and more useful.
As this class is mainly used during Kernel boot, where nothing is yet available, the Response content is always HTML.
Tags
Table of Contents
- GHOST_ADDONS = ['02-14' => self::GHOST_HEART, '02-29' => self::GHOST_PLUS, '10-18' => self::GHOST_GIFT]
- GHOST_GIFT = 'M124.005 5.36c.396-.715 1.119-1.648-.124-1.873-.346-.177-.692-.492-1.038-.141-.769.303-1.435.728-.627 1.523.36.514.685 1.634 1.092 1.758.242-.417.47-.842.697-1.266zm-1.699 1.977c-.706-1.26-1.274-2.612-2.138-3.774-1.051-1.123-3.122-.622-3.593.825-.625 1.431.724 3.14 2.251 2.96 1.159.02 2.324.072 3.48-.011zm5.867.043c1.502-.202 2.365-2.092 1.51-3.347-.757-1.34-2.937-1.387-3.698-.025-.659 1.1-1.23 2.25-1.835 3.38 1.336.077 2.686.06 4.023-.008zm2.487 1.611c.512-.45 2.494-.981.993-1.409-.372-.105-.805-.59-1.14-.457-.726.902-1.842 1.432-3.007 1.376-.228.075-1.391-.114-1.077.1.822.47 1.623.979 2.474 1.395.595-.317 1.173-.667 1.757-1.005zm-11.696.255l1.314-.765c-1.338-.066-2.87.127-3.881-.95-.285-.319-.559-.684-.954-.282-.473.326-1.929.66-.808 1.058.976.576 1.945 1.167 2.946 1.701.476-.223.926-.503 1.383-.762zm6.416 2.846c.567-.456 1.942-.89 1.987-1.38-1.282-.737-2.527-1.56-3.87-2.183-.461-.175-.835.094-1.207.328-1.1.654-2.225 1.267-3.288 1.978 1.39.86 2.798 1.695 4.219 2.504.725-.407 1.44-.83 2.16-1.247zm5.692 1.423l1.765-1.114c-.005-1.244.015-2.488-.019-3.732a77.306 77.306 0 0 0-3.51 2.084c-.126 1.282-.062 2.586-.034 3.876.607-.358 1.2-.741 1.798-1.114zm-13.804-.784c.06-1.06.19-2.269-1.09-2.583-.807-.376-1.926-1.341-2.548-1.332-.02 1.195-.01 2.39-.011 3.585 1.192.744 2.364 1.524 3.582 2.226.119-.616.041-1.269.067-1.896zm8.541 4.105l2.117-1.336c-.003-1.284.05-2.57-.008-3.853-.776.223-1.662.91-2.48 1.337l-1.834 1.075c.012 1.37-.033 2.744.044 4.113.732-.427 1.443-.887 2.161-1.336zm-2.957-.72v-2.057c-1.416-.828-2.828-1.664-4.25-2.482-.078 1.311-.033 2.627-.045 3.94 1.416.887 2.817 1.798 4.25 2.655.057-.683.036-1.372.045-2.057zm8.255 2.755l1.731-1.153c-.024-1.218.06-2.453-.062-3.658-1.2.685-2.358 1.464-3.537 2.195.028 1.261-.058 2.536.072 3.786.609-.373 1.2-.777 1.796-1.17zm-13.851-.683l-.014-1.916c-1.193-.746-2.37-1.517-3.58-2.234-.076 1.224-.033 2.453-.044 3.679 1.203.796 2.392 1.614 3.61 2.385.048-.636.024-1.276.028-1.914zm8.584 4.199l2.102-1.396c-.002-1.298.024-2.596-.01-3.893-1.427.88-2.843 1.775-4.25 2.686-.158 1.253-.055 2.545-.056 3.811.437.266 1.553-.912 2.214-1.208zm-2.988-.556c-.085-.894.365-2.154-.773-2.5-1.146-.727-2.288-1.46-3.45-2.163-.17 1.228.008 2.508-.122 3.751a79.399 79.399 0 0 0 4.278 2.885c.117-.641.044-1.32.067-1.973zm-4.872-.236l-5.087-3.396c.002-3.493-.047-6.988.015-10.48.85-.524 1.753-.954 2.627-1.434-.564-1.616.25-3.58 1.887-4.184 1.372-.563 3.025-.055 3.9 1.13l1.906-.978 1.916.987c.915-1.086 2.483-1.706 3.842-1.097 1.631.573 2.52 2.532 1.936 4.145.88.497 1.837.886 2.644 1.492.036 3.473 0 6.946-.003 10.419-3.374 2.233-6.693 4.55-10.122 6.699-.997 0-1.858-1.083-2.783-1.522a735.316 735.316 0 0 1-2.678-1.781z'
- GHOST_HEART = 'M125.914 8.305c3.036-8.71 14.933 0 0 11.2-14.932-11.2-3.036-19.91 0-11.2z'
- GHOST_PLUS = 'M111.368 8.97h7.324V1.645h7.512v7.323h7.324v7.513h-7.324v7.323h-7.512v-7.323h-7.324z'
- $caughtBuffer : mixed
- $caughtLength : mixed
- $charset : mixed
- $debug : mixed
- $fileLinkFormat : mixed
- $handler : mixed
- __construct() : mixed
- getContent() : string
- Gets the HTML content associated with the given exception.
- getHtml() : string
- Gets the full HTML content associated with the given exception.
- getStylesheet() : string
- Gets the stylesheet associated with the given exception.
- handle() : mixed
- Sends a response for the given Exception.
- register() : static
- Registers the exception handler.
- sendPhpResponse() : mixed
- Sends the error associated with the given Exception as a plain PHP response.
- setFileLinkFormat() : string
- Sets the format for links to source files.
- setHandler() : callable|null
- Sets a user exception handler.
- addElementToGhost() : string
- decorate() : string
- escapeHtml() : string
- HTML-encodes a string.
- formatArgs() : string
- Formats an array as a string.
- formatClass() : string
- formatPath() : string
- getSymfonyGhostAsSvg() : string
Constants
GHOST_ADDONS
private
mixed
GHOST_ADDONS
= ['02-14' => self::GHOST_HEART, '02-29' => self::GHOST_PLUS, '10-18' => self::GHOST_GIFT]
GHOST_GIFT
private
mixed
GHOST_GIFT
= 'M124.005 5.36c.396-.715 1.119-1.648-.124-1.873-.346-.177-.692-.492-1.038-.141-.769.303-1.435.728-.627 1.523.36.514.685 1.634 1.092 1.758.242-.417.47-.842.697-1.266zm-1.699 1.977c-.706-1.26-1.274-2.612-2.138-3.774-1.051-1.123-3.122-.622-3.593.825-.625 1.431.724 3.14 2.251 2.96 1.159.02 2.324.072 3.48-.011zm5.867.043c1.502-.202 2.365-2.092 1.51-3.347-.757-1.34-2.937-1.387-3.698-.025-.659 1.1-1.23 2.25-1.835 3.38 1.336.077 2.686.06 4.023-.008zm2.487 1.611c.512-.45 2.494-.981.993-1.409-.372-.105-.805-.59-1.14-.457-.726.902-1.842 1.432-3.007 1.376-.228.075-1.391-.114-1.077.1.822.47 1.623.979 2.474 1.395.595-.317 1.173-.667 1.757-1.005zm-11.696.255l1.314-.765c-1.338-.066-2.87.127-3.881-.95-.285-.319-.559-.684-.954-.282-.473.326-1.929.66-.808 1.058.976.576 1.945 1.167 2.946 1.701.476-.223.926-.503 1.383-.762zm6.416 2.846c.567-.456 1.942-.89 1.987-1.38-1.282-.737-2.527-1.56-3.87-2.183-.461-.175-.835.094-1.207.328-1.1.654-2.225 1.267-3.288 1.978 1.39.86 2.798 1.695 4.219 2.504.725-.407 1.44-.83 2.16-1.247zm5.692 1.423l1.765-1.114c-.005-1.244.015-2.488-.019-3.732a77.306 77.306 0 0 0-3.51 2.084c-.126 1.282-.062 2.586-.034 3.876.607-.358 1.2-.741 1.798-1.114zm-13.804-.784c.06-1.06.19-2.269-1.09-2.583-.807-.376-1.926-1.341-2.548-1.332-.02 1.195-.01 2.39-.011 3.585 1.192.744 2.364 1.524 3.582 2.226.119-.616.041-1.269.067-1.896zm8.541 4.105l2.117-1.336c-.003-1.284.05-2.57-.008-3.853-.776.223-1.662.91-2.48 1.337l-1.834 1.075c.012 1.37-.033 2.744.044 4.113.732-.427 1.443-.887 2.161-1.336zm-2.957-.72v-2.057c-1.416-.828-2.828-1.664-4.25-2.482-.078 1.311-.033 2.627-.045 3.94 1.416.887 2.817 1.798 4.25 2.655.057-.683.036-1.372.045-2.057zm8.255 2.755l1.731-1.153c-.024-1.218.06-2.453-.062-3.658-1.2.685-2.358 1.464-3.537 2.195.028 1.261-.058 2.536.072 3.786.609-.373 1.2-.777 1.796-1.17zm-13.851-.683l-.014-1.916c-1.193-.746-2.37-1.517-3.58-2.234-.076 1.224-.033 2.453-.044 3.679 1.203.796 2.392 1.614 3.61 2.385.048-.636.024-1.276.028-1.914zm8.584 4.199l2.102-1.396c-.002-1.298.024-2.596-.01-3.893-1.427.88-2.843 1.775-4.25 2.686-.158 1.253-.055 2.545-.056 3.811.437.266 1.553-.912 2.214-1.208zm-2.988-.556c-.085-.894.365-2.154-.773-2.5-1.146-.727-2.288-1.46-3.45-2.163-.17 1.228.008 2.508-.122 3.751a79.399 79.399 0 0 0 4.278 2.885c.117-.641.044-1.32.067-1.973zm-4.872-.236l-5.087-3.396c.002-3.493-.047-6.988.015-10.48.85-.524 1.753-.954 2.627-1.434-.564-1.616.25-3.58 1.887-4.184 1.372-.563 3.025-.055 3.9 1.13l1.906-.978 1.916.987c.915-1.086 2.483-1.706 3.842-1.097 1.631.573 2.52 2.532 1.936 4.145.88.497 1.837.886 2.644 1.492.036 3.473 0 6.946-.003 10.419-3.374 2.233-6.693 4.55-10.122 6.699-.997 0-1.858-1.083-2.783-1.522a735.316 735.316 0 0 1-2.678-1.781z'
GHOST_HEART
private
mixed
GHOST_HEART
= 'M125.914 8.305c3.036-8.71 14.933 0 0 11.2-14.932-11.2-3.036-19.91 0-11.2z'
GHOST_PLUS
private
mixed
GHOST_PLUS
= 'M111.368 8.97h7.324V1.645h7.512v7.323h7.324v7.513h-7.324v7.323h-7.512v-7.323h-7.324z'
Properties
$caughtBuffer
private
mixed
$caughtBuffer
$caughtLength
private
mixed
$caughtLength
$charset
private
mixed
$charset
$debug
private
mixed
$debug
$fileLinkFormat
private
mixed
$fileLinkFormat
$handler
private
mixed
$handler
Methods
__construct()
public
__construct([bool $debug = true ][, string $charset = null ][, mixed $fileLinkFormat = null ]) : mixed
Parameters
- $debug : bool = true
- $charset : string = null
- $fileLinkFormat : mixed = null
Return values
mixed —getContent()
Gets the HTML content associated with the given exception.
public
getContent(FlattenException $exception) : string
Parameters
- $exception : FlattenException
Return values
string —The content as a string
getHtml()
Gets the full HTML content associated with the given exception.
public
getHtml(Exception|FlattenException $exception) : string
Parameters
- $exception : Exception|FlattenException
-
An \Exception or FlattenException instance
Return values
string —The HTML content as a string
getStylesheet()
Gets the stylesheet associated with the given exception.
public
getStylesheet(FlattenException $exception) : string
Parameters
- $exception : FlattenException
Return values
string —The stylesheet as a string
handle()
Sends a response for the given Exception.
public
handle(Exception $exception) : mixed
To be as fail-safe as possible, the exception is first handled by our simple exception handler, then by the user exception handler. The latter takes precedence and any output from the former is cancelled, if and only if nothing bad happens in this handling path.
Parameters
- $exception : Exception
Return values
mixed —register()
Registers the exception handler.
public
static register([bool $debug = true ][, string|null $charset = null ][, string|null $fileLinkFormat = null ]) : static
Parameters
- $debug : bool = true
-
Enable/disable debug mode, where the stack trace is displayed
- $charset : string|null = null
-
The charset used by exception messages
- $fileLinkFormat : string|null = null
-
The IDE link template
Return values
static —sendPhpResponse()
Sends the error associated with the given Exception as a plain PHP response.
public
sendPhpResponse(Throwable|FlattenException $exception) : mixed
This method uses plain PHP functions like header() and echo to output the response.
Parameters
- $exception : Throwable|FlattenException
-
A \Throwable or FlattenException instance
Return values
mixed —setFileLinkFormat()
Sets the format for links to source files.
public
setFileLinkFormat(string|FileLinkFormatter $fileLinkFormat) : string
Parameters
- $fileLinkFormat : string|FileLinkFormatter
-
The format for links to source files
Return values
string —The previous file link format
setHandler()
Sets a user exception handler.
public
setHandler([callable $handler = null ]) : callable|null
Parameters
- $handler : callable = null
-
An handler that will be called on Exception
Return values
callable|null —The previous exception handler if any
addElementToGhost()
private
addElementToGhost() : string
Return values
string —decorate()
private
decorate(string $content, string $css) : string
Parameters
- $content : string
- $css : string
Return values
string —escapeHtml()
HTML-encodes a string.
private
escapeHtml(string $str) : string
Parameters
- $str : string
Return values
string —formatArgs()
Formats an array as a string.
private
formatArgs(array<string|int, mixed> $args) : string
Parameters
- $args : array<string|int, mixed>
Return values
string —formatClass()
private
formatClass(string $class) : string
Parameters
- $class : string
Return values
string —formatPath()
private
formatPath(string $path, int $line) : string
Parameters
- $path : string
- $line : int
Return values
string —getSymfonyGhostAsSvg()
private
getSymfonyGhostAsSvg() : string