PHP Laravel扩展了错误处理程序类

dawsonc623

我正在尝试为我的应用程序构建特定的错误“堆栈”。我有一个小的模块系统,我希望能够将模块中的错误处理程序添加到当前错误堆栈中。但是,有些错误处理程序需要在模块错误处理程序之前进行检查,但是如果模块的引导过程出错,则需要在模块错误处理程序之前进行注册。

我要寻找的堆栈如下所示:

  • 记录错误处理程序
  • 警报错误处理程序(如有必要,向开发人员发送电子邮件)
  • 模块错误处理程序
  • 应用程序错误处理程序
  • 默认后备

当应用程序启动时,日志记录,警报和默认回退将立即放置在堆栈中。我希望接下来能够对应用程序错误处理程序进行存根,然后在确定并加载模块后再对模块错误处理程序进行存根。据我所知,错误处理程序只能放在堆栈的顶部或底部。没有插入中间。

有没有一种方法可以插入到错误处理程序中?如果没有,是否可以注册不同的错误处理类(从内置类扩展而来)?

dawsonc623

为了节省时间,我设法提出了一个可行的解决方案。这不是我真正想要的,但是如果其他人需要执行类似操作,我会分享它。

我的方法是扩展Illuminate \ Foundation \ Application并重写registerExceptionProvider()方法以注册我自己的ExceptionServiceProvider此提供程序从Illuminate \ Exception \ ExceptionServiceProvider扩展,并覆盖registerHandler()方法。在这里,我以与原始提供者注册默认处理程序相同的方式注册我的处理程序。

我将默认应用程序提供的每个错误方法的insert *版本在实际将错误插入错误处理程序堆栈处理程序中添加insertError方法最后,我更改了start.php文件以创建我的应用程序,而不是默认应用程序

正如我提到的,我不太喜欢这种方法。我觉得必须要做的事情更加繁重。看来Laravel应该有更好的方法来扩展实际的错误处理程序,或者至少有一个接口来更精确地注册错误处理程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章