rinvent / 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: 2024-09-04 11:26:06 UTC
README
- 这个异常存储实现是面向文件系统的。
- 需要将异常文件放在 Exception 目录下。
- 还需要在包含所有可能值的公共枚举中注册新的异常。
- 这可以自动计算错误字符串和数值代码。
- 此外,这种做法还规定了异常处理的规则,这将使异常的存储和使用更加纯净。
// Текстовый код ошибки. // Калькулируется по расположению в файловой системе. // Нужен, чтобы завязать на него систему переводов $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