Skip to content
Aleksey Perevoshchikov edited this page Mar 20, 2017 · 7 revisions

Файл main.php является главным конфигурационным файлом. Его полное имя должно быть передано в \Peraleks\ErrorHandler\Core\ErrorHandler::instance($file) при подключении ErrorHandler.

Определение режимов: development, production и cli.

ErrorHandler использует отложенную инициализацию конфигурации. То есть конфигурационные файлы будут подключены в скрипт только после того как произойдёт первая ошибка.

Development режим задаётся при помощи глобальной константы 'DEVELOPMENT_MODE'.
Имя константы может быть любым и задаётся во второй строке.

define('DEVELOPMENT_MODE', true);
$modeConstant = 'DEVELOPMENT_MODE';

Для чего это нужно?

Во первых сама константа нужна для отложенной инициализации режима.

Например в вашем проекте уже есть общий конфигурационный файл, в котором определяется режим работы для всего приложения. Если для этого вы уже используете глобальную константу, то строку define('DEVELOPMENT_MODE', true); вы можете просто удалить, а переменной $modeConstant присвоить имя вашей константы.

До тех пор пока константа не определена и не равна true, ErrorHandler будет работать в production режиме.

Если вы инициализируете режим работы приложения каким-то другим способом, то можете просто перенести строку define('DEVELOPMENT_MODE', true); в ваш общий конфигурационный файл, чтобы все важные настройки были собраны в одном месте.

Так же вы можете просто оставить всё как есть и задавать режим для ErrorHandler отдельно от настроек вашего приложения.

Далее в файле main.php реализована логика выбора режима.

if (PHP_SAPI === 'cli') {
$config = __DIR__.'/configCLI.php';
} elseif (defined($modeConstant) && true === constant($modeConstant)) {
$config = __DIR__.'/configDEV.php';
$mode = 'dev';
} else {
$config = __DIR__.'/configPROD.php';
}

Здесь всё достаточно просто, как вы видите. В зависимости от режима, переменной $config присваивается полное имя дополнительного конфигурационного файла. Этот файл будет подключен ниже.

Для того, чтобы инвертировать константу 'DEVELOPMENT_MODE' в 'PRODUCTION_MODE', надо поменять местами строчки $config = __DIR__.'/configDEV.php'; и $config = __DIR__.'/configPROD.php';
Конечно же вы вправе написать полностью свою собственную логику выбора режима. Например в зависимости от IP-адреса или типа клиента, cookie и т.д.

$trace = E_ERROR | E_RECOVERABLE_ERROR;

В этой строке переменной $trace присваивается битовая маска, определяющая для каких ошибок надо показать стек вызовов. Переменная будет использована в дополнительных подключаемых файлах (configCLI.php, configDEV.php, configPROD.php).

Далее формируется и возвращается массив конфигурации.

return [
'SELF_LOG_FILE' => '',
'ERROR_REPORTING' => E_ALL,
'APP_DIR' => 'default',
'NOTIFIERS' => require$config,
'MODE' => $mode ?? 'prod',
];
параметртипзначение
'SELF_LOG_FILE'stringЗадаёт полное имя файла, в который ErrorHandler будет записывать свои внутренние ошибки. Если передана пустая строка, будет назначено значение по умолчанию:$_SERVER['DOCUMENT_ROOT']. '/error_handler_xxxxxxxxxx.log, где xxxxxxxxxx crc32-хеш, добавленный из соображений безопасности.
'ERROR_REPORTING'intБитовая маска, определяющая какие ошибки будут обработаны. Аналогия error_reporting в PHP.
Имеет приоритет над параметром уведомителей 'enadle', но может быть им понижен.
Выключить все ошибки: 0.
'APP_DIR'stringПолный путь к корневой папке вашего приложения. Используется уведомителями для сокращённого показа имён файлов в отчёте (для удобства), и больше ни на что не влияет. Если передана строка 'default' будет назначено значение по умолчанию:dirname($_SERVER['DOCUMENT_ROOT']).
'NOTIFIERS'arrayМассив уведомителей, который вернёт один из подключенных конфигурационных файлов (configCLI.php, configDEV.php, configPROD.php).
'MODE'stringТребуется только для внутреннего обработчика ошибок. Если передана строка 'dev' внутренняя ошибка будет не только записана в лог-файл но и показана в браузере.
По умолчанию:prod.


Clone this wiki locally