atournayre/exception-handler

此包已被废弃且不再维护。作者建议使用 symfony/symfony 包。

使用 Symfony 和自定义 PHP 属性进行集中式异常处理

1.1.0 2023-04-26 12:50 UTC

This package is auto-updated.

Last update: 2023-12-02 10:04:44 UTC


README

此组件帮助在 Symfony 中处理异常。

它受到文章《使用 Symfony 和自定义 PHP 属性进行集中式异常处理》的启发,作者为 Dejan Angelov。请先阅读!

安装

Composer

composer require atournayre/exception-handler

使用方法

  1. 在您的应用程序中将 HttpStatusCodeExceptionHandler 定义为监听器。
  2. 在您的现有/新异常类上声明属性。
  3. 在控制器中移除(或不要捕获异常)。
  4. 它工作了!

在您的应用程序中定义 HttpStatusCodeExceptionHandler 为监听器

# config/services.yaml
services:
  Atournayre\Component\ExceptionHandler\Handler\HttpStatusCodeExceptionHandler:
    tags:
      - { name: kernel.event_listener, event: kernel.exception }

在您的现有/新异常类上声明属性。

// Example for a NotFound (404)
#[NotFound]
class OrderNotFound extends Exception
{
    public function __construct(OrderId $id)
    {
        parent::__construct(
            sprintf('The order "%s" could not be found.', (string) $id)
        );
    }
}
// Example for a UnprocessableEntity (422)
#[UnprocessableEntity]
class OrderAlreadyShipped extends Exception { ... }
// Example for a Forbidden (403)
#[Forbidden]
class CustomerMismatch extends Exception { ... }

贡献

当然,开源是靠每个人的时间和精力来推动的。如果您想看到一个新功能或添加一些您自己的积极评论,太棒了!您可以提出请求——但是创建一个 pull request 是完成工作的更好方式。

无论如何,请放心提交问题或 pull request:所有贡献和问题都深受欢迎 :)