phphd / exception-toolkit
异常处理工具包
1.0.1
2024-09-28 12:52 UTC
Requires
- php: >=8.1
Requires (Dev)
- amphp/amp: ^3.0
- nyholm/symfony-bundle-test: ^3.0
- phphd/coding-standard: ~0.5.3
- phpstan/phpstan: ^1.11
- phpstan/phpstan-phpunit: ^1.4
- phpunit/phpunit: ^10.5
- symfony/config: ^6.0 | ^7.0
- symfony/dependency-injection: ^6.2 | ^7.0
- symfony/http-kernel: ^6.0 | ^7.0
- symfony/messenger: ^6.4 | ^7.0
- symfony/var-dumper: ^6.0 | ^7.0
- tomasvotruba/type-coverage: ^0.3.1
Suggests
- amphp/amp: There's an unwrapper for Amp exceptions of ^3.0 or above
- symfony/messenger: There's an unwrapper for Messenger exceptions of ^6.4 or above
Conflicts
- amphp/amp: >=4.0
- symfony/config: <6.0 || >=8.0
- symfony/dependency-injection: <6.2 || >=8.0
- symfony/http-kernel: <6.0 || >=8.0
- symfony/messenger: >=8.0
README
🧰 为PHP应用程序提供处理异常的工具集。
安装 📥
-
通过composer安装
composer require phphd/exception-toolkit
-
如果你使用symfony,请在
bundles.php
中启用该捆绑包PhPhD\ExceptionToolkit\Bundle\PhdExceptionToolkitBundle::class => ['all' => true],
提供的工具 ⚙️
异常解包器
允许您解包复合异常,并获取您感兴趣的原子错误
use PhPhD\ExceptionToolkit\Unwrapper\ExceptionUnwrapper; /** @var ExceptionUnwrapper $unwrapper */ $unwrapper = getUnwrapper(); $compositeException = new CompositeException([ new InvalidEmailException(), new CompositeException([ new InvalidPasswordException(), ]), ]); [$emailError, $passwordError] = $unwrapper->unwrap($compositeException);
在此示例中,错误是从复合异常中检索的: $emailError
将是 InvalidEmailException
的实例,而 $passwordError
将是 InvalidPasswordException
的实例,这些实例被复合异常所包装。
Symfony集成
在symfony应用程序中,您可以使用ExceptionUnwrapper服务
public function __construct( #[Autowire('@phd_exception_toolkit.exception_unwrapper')] private ExceptionUnwrapper $exceptionUnwrapper, ) {}
这将为您提供一个打包到单个实例中的定义的解包器完整堆栈。
如果您想定义自定义解包器,您应该装饰
phd_exception_toolkit.exception_unwrapper.stack
服务。
内置解包器
Messenger
如果您使用symfony messenger,则 Symfony\Component\Messenger\Exception\WrappedExceptionsInterface
将自动解包。
Amp
如果您使用Amp,则 Amp\CompositeException
将自动解包。