Final Class Yiisoft\ErrorHandler\ErrorHandler
| Inheritance | Yiisoft\ErrorHandler\ErrorHandler |
|---|
ErrorHandler handles out of memory errors, fatals, warnings, notices and exceptions.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\ErrorHandler\ErrorHandler | |
| debug() | Enables and disables debug mode. | Yiisoft\ErrorHandler\ErrorHandler |
| handle() | Handles throwable and returns error data. | Yiisoft\ErrorHandler\ErrorHandler |
| memoryReserveSize() | Sets the size of the reserved memory. | Yiisoft\ErrorHandler\ErrorHandler |
| register() | Register PHP exception and error handlers and enable this error handler. | Yiisoft\ErrorHandler\ErrorHandler |
| unregister() | Disable this error handler. | Yiisoft\ErrorHandler\ErrorHandler |
Method Details
| public mixed __construct ( \Psr\Log\LoggerInterface $logger, Yiisoft\ErrorHandler\ThrowableRendererInterface $defaultRenderer, \Psr\EventDispatcher\EventDispatcherInterface|null $eventDispatcher = null, integer $exitShutdownHandlerDepth = 2 ) | ||
| $logger | \Psr\Log\LoggerInterface |
Logger to write errors to. |
| $defaultRenderer | Yiisoft\ErrorHandler\ThrowableRendererInterface |
Default throwable renderer. |
| $eventDispatcher | \Psr\EventDispatcher\EventDispatcherInterface|null |
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\ErrorHandler\ErrorData handle ( Throwable $t, Yiisoft\ErrorHandler\ThrowableRendererInterface|null $renderer = null, \Psr\Http\Message\ServerRequestInterface|null $request = null ) | ||
| $t | Throwable | |
| $renderer | Yiisoft\ErrorHandler\ThrowableRendererInterface|null | |
| $request | \Psr\Http\Message\ServerRequestInterface|null | |
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'])) {
unset($backtrace[0]['function'], $backtrace[0]['class'], $backtrace[0]['type'], $backtrace[0]['args']);
} else {
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;
}
Signup or Login in order to comment.