-
Notifications
You must be signed in to change notification settings - Fork 0
main.php
Файл main.php является главным конфигурационным файлом. Его полное имя должно быть передано в \Peraleks\ErrorHandler\Core\ErrorHandler::instance($file) при подключении ErrorHandler.
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. |
-
Config
- configCLI.php
- configDEV.php
- configPROD.php
- main.php