phphd/exception-toolkit

异常处理工具包

安装次数: 683

依赖关系: 2

建议者: 0

安全: 0

星星: 0

关注者: 0

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.1 2024-09-28 12:52 UTC

This package is auto-updated.

Last update: 2024-09-28 12:52:51 UTC


README

🧰 为PHP应用程序提供处理异常的工具集。

Build Status Codecov Packagist Downloads Licence

安装 📥

  1. 通过composer安装

    composer require phphd/exception-toolkit
  2. 如果你使用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 将自动解包。