rinsvent / exception
File system-oriented exception
v1.0.2
2022-11-04 07:09 UTC
Requires
- php: ^8.1
- ext-ctype: *
- ext-mbstring: *
This package is auto-updated.
Last update: 2025-04-04 12:38:10 UTC
README
- Это реализация хранения исключений ориентирована на файловую систему.
- Нужно класть файлы исключений в директорию Exception.
- И нужно регистрировать новые исключения в общем enum со списком всех возможных значений.
- Это позволит автоматически калькулировать строковый и числовой код ошибки.
- К тому же этот подход диктует правила работы с исключениями, что сделает их хранение и использование более чистым
// Текстовый код ошибки. // Калькулируется по расположению в файловой системе. // Нужен, чтобы завязать на него систему переводов $e->getCodeText(); // Числовой код ошибки. // Калькулируется по позиции в enum. // Нужен чтобы клиенту было легче сообщить об ошибке $e->getCode(); // Штатное поле. Не менялось $e->getMessage(); // Здесь getMessage. // Если он пустой, то текст будет на основе названия исключения. $e->getSummary();
use \Rinsvent\Exception\AbstractException; use \Rinsvent\Exception\CodeTrait; class DefaultException extends AbstractException {} // psth: src/Exception/DefaultException.php class AccessDenied extends AbstractException {} // psth: src/Exception/AccessDenied.php class AlreadyCreated extends AbstractException {} // psth: src/Exception/User/AlreadyCreated.php enum MyProjectEnum: string implements \Rinsvent\Exception\CodeInterface { use CodeTrait; case Default = DefaultException::class; case AccessDenied = AccessDenied::class; case UserAlreadyCreated = AlreadyCreated::class; } // Регистрируем наше хранилище с ошибками AbstractException::$exceptionEnum = MyProjectEnum::class; $e = new AlreadyCreated('Your custom message'); $e->getCodeText(); // user.already_created $e->getCode(); // 200 $e->getMessage(); // Your custom message $e->getSummary(); // Your custom message $e = new AccessDenied(); $e->getCodeText(); // access_denied $e->getCode(); // 100 $e->getMessage(); // '' $e->getSummary(); // Access denied