Класс ExceptionTrap
Точка входа в обработку исключений CakePHP.
Используя метод register(), вы можете подключить ExceptionTrap к обработчику исключений по умолчанию PHP и зарегистрировать обработчик завершения для обработки фатальных ошибок.
Когда исключения перехватываются, срабатывает событие Exception.beforeRender. Затем исключения регистрируются (если включено) и, наконец, «отображаются» с использованием определённого рендерера.
Остановка события Exception.beforeRender не имеет эффекта, так как нам всегда нужно отобразить ответ на исключение, и пользовательские рендеры должны использоваться, если вы хотите заменить или пропустить отображение исключения.
Если не определён, рендерер исключений будет выбран на основе текущего SAPI (CLI или Web).
Краткое описание свойств
- $_config protected
array<string, mixed>Конфигурация выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация уже настроена с помощью значений по умолчанию
- $_defaultConfig protected
array<string, mixed>Параметры конфигурации. Обычно они определяются в файле config/app.php
- $_eventClass protected
stringИмя класса по умолчанию для новых объектов событий.
- $_eventManager protected
Cake\Event\EventManagerInterface|nullЭкземпляр Cake\Event\EventManager, используемый этим объектом для отправки внутренних событий.
- $callbacks protected
arrayClosure>Список обработчиков обратных вызовов.
- $disabled protected
boolОтслеживает, был ли этот обработчик исключений удалён из глобального обработчика.
- $registeredTrap protected static
Cake\Error\ExceptionTrap|nullТекущий зарегистрированный глобальный обработчик исключений
Краткое описание методов
-
__construct() public
Конструктор
-
_configDelete() protected
Удаляет отдельный ключ конфигурации.
-
_configRead() protected
Считывает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
chooseRenderer() protected
Выбор обработчика исключений на основе конфигурации или SAPI
-
configShallow() public
Объединяет предоставленную конфигурацию с существующей. В отличие от
config(), который выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
dispatchEvent() public
Обёртка для создания и отправки событий.
-
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для указанного ключа.
-
getEventManager() public
Возвращает экземпляр менеджера событий Cake\Event\EventManager для этого объекта.
-
handleException() public
Обработка необработанных исключений.
-
handleFatalError() public
Отображение/Ведение лога критической ошибки.
-
handleShutdown() public
Обработчик завершения работы
-
increaseMemoryLimit() public
Увеличивает значение ini PHP "memory_limit" на указанную величину в килобайтах
-
instance() public static
Получить зарегистрированный глобальный экземпляр, если он установлен.
-
logException() public
Ведение лога исключения.
-
logInternalError() public
Вызвать ошибку, возникшую во время обработки исключения.
-
logger() public
Получить экземпляр регистратора.
-
register() public
Присоединить этот ExceptionTrap к обработчику исключений по умолчанию PHP.
-
renderer() public
Получить экземпляр обработчика.
-
setConfig() public
Устанавливает конфигурацию.
-
setEventManager() public
Возвращает экземпляр Cake\Event\EventManagerInterface для этого объекта.
-
unregister() public
Удалить этот экземпляр из одиночки
Подробное описание методов
__construct() public
__construct(array<string, mixed> $options = [])
Конструктор
Параметры
-
array<string, mixed>$options необязательный Массив опций. См. $_defaultConfig.
_configDelete() protected
_configDelete(string $key): void
Удаляет один ключ конфигурации.
Параметры
-
string$key Ключ для удаления.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionпри попытке перезаписи существующей конфигурации
_configRead() protected
_configRead(string|null $key): mixed
Читает ключ конфигурации.
Параметры
-
string|null$key Ключ для чтения.
Возвращает
mixed_configWrite() protected
_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
Записывает ключ конфигурации.
Параметры
-
array<string, mixed>|string$key Ключ для записи.
-
mixed$value Значение для записи.
-
string|bool$merge необязательный True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи. По умолчанию false.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionпри попытке перезаписи существующей конфигурации
chooseRenderer() protected
chooseRenderer(): class-stringCake\Error\ExceptionRendererInterface>
Выбор обработчика исключений на основе конфигурации или SAPI
Возвращает
class-stringCake\Error\ExceptionRendererInterface>configShallow() public
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
Объединяет предоставленную конфигурацию с существующей. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value необязательный Значение для установки.
Возвращает
$thisdispatchEvent() public
dispatchEvent(string $name, array|null $data = null, object|null $subject = null): Cake\Event\EventInterface
Оборачивание для создания и отправки событий.
Возвращает отправленное событие.
Параметры
-
string$name Имя события.
-
array|null$data необязательный Любое значение, которое вы хотите передать вместе с этим событием, чтобы его могли прочитать слушатели.
-
object|null$subject необязательный Объект, к которому относится это событие ($this по умолчанию).
Возвращает
Cake\Event\EventInterfacegetConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определенного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
-
string|null$key необязательный Ключ для получения или null для всей конфигурации.
-
mixed$default необязательный Значение возврата, когда ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для указанного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedИсключения
InvalidArgumentExceptiongetEventManager() public
getEventManager(): Cake\Event\EventManagerInterface
Возвращает экземпляр менеджера Cake\Event\EventManager для этого объекта.
Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов к событиям объекта, или создавать собственные события и запускать их по своему усмотрению.
Возвращает
Cake\Event\EventManagerInterfacehandleException() public
handleException(Throwable $exception): void
Обработка необработанных исключений.
Использует шаблонный метод, предоставленный подклассами, для отображения ошибок соответствующим образом в среде.
Параметры
-
Throwable$exception Экземпляр исключения.
Возвращает
voidИсключения
ExceptionКогда класс обработчика не найден
См. также
handleFatalError() public
handleFatalError(int $code, string $description, string $file, int $line): void
Отображение/регистрация критической ошибки.
Параметры
-
int$code Код ошибки
-
string$description Описание ошибки
-
string$file Файл, в котором произошла ошибка
-
int$line Строка, которая вызвала ошибку
Возвращает
voidhandleShutdown() public
handleShutdown(): void
Обработчик завершения
Преобразование критических ошибок в исключения, которые мы можем отобразить.
Возвращает
voidincreaseMemoryLimit() public
increaseMemoryLimit(int $additionalKb): void
Увеличивает настройку PHP "memory_limit" на указанную величину в килобайтах
Параметры
-
int$additionalKb Число в килобайтах
Возвращает
voidinstance() public static
instance(): Cake\Error\ExceptionTrap|null
Получение зарегистрированного глобального экземпляра, если он установлен.
Помните, что глобальное состояние, содержащееся здесь, изменяемое, и возвращаемый этим методом объект может быть устаревшим.
Возвращает
Cake\Error\ExceptionTrap|nulllogException() public
logException(Throwable $exception, Psr\Http\Message\ServerRequestInterface|null $request = null): void
Регистрация исключения.
В основном, публичная функция для обеспечения согласованности между глобальной обработкой исключений и ErrorHandlerMiddleware. Этот метод применит фильтр skipLog, пропуская регистрацию, если исключение не должно регистрироваться.
После попытки регистрации срабатывает событие Exception.beforeRender.
Параметры
-
Throwable$exception Исключение для регистрации
-
Psr\Http\Message\ServerRequestInterface|null$request необязательный Необязательный запрос
Возвращает
voidlogInternalError() public
logInternalError(Throwable $exception): void
Вызывает ошибку, возникшую при отображении исключения.
Вызывая E_USER_ERROR, мы можем попасть в стандартную обработку исключений, которая зарегистрирует неудачу отображения и, надеюсь, отобразит страницу с ошибкой.
Параметры
-
Throwable$exception Исключение для регистрации
Возвращает
voidlogger() public
logger(): Cake\Error\ErrorLoggerInterface
Получение экземпляра логгера.
Возвращает
Cake\Error\ErrorLoggerInterfaceregister() public
register(): void
Присоединить этот ExceptionTrap к обработчику исключений по умолчанию PHP.
Это заменит существующий обработчик исключений, и предыдущий обработчик исключений будет удалён.
Возвращает
voidrenderer() public
renderer(Throwable $exception, Psr\Http\Message\ServerRequestInterface|null $request = null): Cake\Error\ExceptionRendererInterface
Получить экземпляр рендерера.
Параметры
-
Throwable$exception Исключение для рендеринга
-
Psr\Http\Message\ServerRequestInterface|null$request optional Запрос, если доступен.
Возвращает
Cake\Error\ExceptionRendererInterfacesetConfig() public
setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this
Устанавливает конфигурацию.
Использование
Установка конкретного значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или массив всей конфигурации.
-
mixed|null$value optional Значение для установки.
-
bool$merge optional Необходимо ли рекурсивное слияние или перезапись существующей конфигурации, по умолчанию true.
Возвращает
$thisИсключения
Cake\Core\Exception\CakeExceptionПри попытке установить недопустимый ключ.
setEventManager() public
setEventManager(Cake\Event\EventManagerInterface $eventManager): $this
Возвращает экземпляр Cake\Event\EventManagerInterface для этого объекта.
Вы можете использовать этот экземпляр для регистрации новых слушателей или обратных вызовов для событий объекта, или создавать свои собственные события и вызывать их по своему усмотрению.
Параметры
-
Cake\Event\EventManagerInterface$eventManager eventManager для установки
Возвращает
$thisunregister() public
unregister(): void
Удалить этот экземпляр из синглтона
Если этот экземпляр не является текущим зарегистрированным синглтоном, ничего не происходит.
Возвращает
voidПодробное описание свойств
$_config protected
Конфигурация во время выполнения
Тип
array<string, mixed>$_configInitialized protected
Установлена ли конфигурация свойства значениями по умолчанию
Тип
bool$_defaultConfig protected
Параметры конфигурации. Обычно они определяются в файле config/app.php
-
exceptionRenderer- строка - Класс, отвечающий за рендеринг необработанных исключений. Выбранный класс будет использоваться как для командной строки, так и для веб-среды. Если вам нужны разные классы для командной строки и веб-среды, вам также потребуется написать условную логику. Обычно пользовательские рендеры хранятся вsrc/Error. Ваш рендер исключений должен реализовывать методrender()и возвращать либо строку, либо Http\Response. -
logУстановите в false, чтобы отключить логирование. -
logger- строка - Имя класса логгера ошибок, который нужно использовать. -
trace- логический тип - Включать ли трассировки в зарегистрированные исключения. -
skipLog- массив - Список исключений, которые нужно пропустить для логирования. Исключения, которые расширяют один из перечисленных исключений, также не будут регистрироваться. Например:'skipLog' => ['Cake\Http\Exception\NotFoundException', 'Cake\Http\Exception\UnauthorizedException']
Этот параметр передаётся в настроенный
logger -
extraFatalErrorMemory- целое число - Количество мегабайт, на которое необходимо увеличить предел памяти при возникновении фатальной ошибки. Это позволяет увеличить отступ, чтобы завершить логирование или обработку ошибок. -
stderrИспользуется в консольных средах, чтобы рендеры могли получить доступ к текущему потоку вывода консоли.
Тип
array<string, mixed>$_eventClass protected
Имя класса по умолчанию для новых объектов события.
Тип
string$_eventManager protected
Экземпляр Cake\Event\EventManager, используемый этим объектом для передачи внутренних событий.
Тип
Cake\Event\EventManagerInterface|null$callbacks protected
Список обратных вызовов для обработки.
Обратные вызовы вызываются для каждой ошибки, которая обрабатывается. Обратные вызовы вызываются в порядке их добавления.
Тип
arrayClosure>$disabled protected
Отслеживать, был ли этот ловушку удалён из глобального обработчика.
Тип
bool$registeredTrap protected static
Текущий зарегистрированный глобальный обработчик исключений
Это наилучшая попытка, так как мы не знаем, зарегистрирован ли/когда ещё один обработчик исключений.
Тип
Cake\Error\ExceptionTrap|null
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.Error.ExceptionTrap.html