Final Class Yiisoft\ErrorHandler\ErrorHandler
| Inheritance | Yiisoft\ |
|---|
ErrorHandler handles out of memory errors, fatals, warnings, notices and exceptions.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\ |
|
| debug() | Enables and disables debug mode. | Yiisoft\ |
| handle() | Handles throwable and returns error data. | Yiisoft\ |
| memoryReserveSize() | Sets the size of the reserved memory. | Yiisoft\ |
| register() | Register PHP exception and error handlers and enable this error handler. | Yiisoft\ |
| unregister() | Disable this error handler. | Yiisoft\ |
Method Details
| public mixed __construct ( \ | ||
| $logger | \ |
Logger to write errors to. |
| $defaultRenderer | Yiisoft\ |
Default throwable renderer. |
| $eventDispatcher | \ |
Event dispatcher for error events. |
| $exitShutdownHandlerDepth | integer |
Depth of the exit() shutdown handler to ensure it's executed last. |
public function __construct(
private readonly LoggerInterface $logger,
private readonly ThrowableRendererInterface $defaultRenderer,
private readonly ?EventDispatcherInterface $eventDispatcher = null,
private readonly int $exitShutdownHandlerDepth = 2,
) {}
Enables and disables debug mode.
Ensure that is is disabled in production environment since debug mode exposes sensitive details.
| public void debug ( boolean $enable = true ) | ||
| $enable | boolean |
Enable/disable debugging mode. |
public function debug(bool $enable = true): void
{
$this->debug = $enable;
}
Handles throwable and returns error data.
| public Yiisoft\ | ||
| $t | Throwable | |
| $renderer | Yiisoft\ |
|
| $request | \ |
|
public function handle(
Throwable $t,
?ThrowableRendererInterface $renderer = null,
?ServerRequestInterface $request = null,
): ErrorData {
$renderer ??= $this->defaultRenderer;
try {
$this->logger->error($t->getMessage(), ['throwable' => $t]);
return $this->debug ? $renderer->renderVerbose($t, $request) : $renderer->render($t, $request);
} catch (Throwable $t) {
return new ErrorData((string) $t);
}
}
Sets the size of the reserved memory.
| public void memoryReserveSize ( integer $size ) | ||
| $size | integer |
The size of the reserved memory. |
public function memoryReserveSize(int $size): void
{
$this->memoryReserveSize = $size;
}
Register PHP exception and error handlers and enable this error handler.
| public void register ( ) |
public function register(): void
{
if ($this->enabled) {
return;
}
if ($this->memoryReserveSize > 0) {
$this->memoryReserve = str_repeat('x', $this->memoryReserveSize);
}
$this->initializeOnce();
// Handles throwable that isn't caught otherwise, echo output and exit.
set_exception_handler(function (Throwable $t): void {
if (!$this->enabled) {
return;
}
$this->renderThrowableAndTerminate($t);
});
// Handles PHP execution errors such as warnings and notices.
set_error_handler(function (int $severity, string $message, string $file, int $line): bool {
if (!$this->enabled) {
return false;
}
if (!(error_reporting() & $severity)) {
// This error code is not included in error_reporting.
return true;
}
$backtrace = debug_backtrace(0);
if (!isset($backtrace[0]['file'])) {
array_shift($backtrace);
}
array_shift($backtrace);
throw new ErrorException($message, $severity, $severity, $file, $line, null, $backtrace);
});
$this->enabled = true;
}
Disable this error handler.
| public void unregister ( ) |
public function unregister(): void
{
if (!$this->enabled) {
return;
}
$this->memoryReserve = '';
$this->enabled = false;
}
User Contributed Notes
Leave a comment
Join the conversation to share a note.