laravel-module如何在不同的模块捕获系统异常

版本:Laravel 8

我现在的实现方式是在每个模块的服务提供者中设置一个全局变量

$GLOBALS['module_name'] = $this->moduleName;

然后在App\Exceptions\Handler中判断

public function register()
{
    if (isset($GLOBALS['module_name'])) {
        switch ($GLOBALS['module_name']) {
            case 'Admin':
                $this->admin();
                break;
            case 'Shop':
                $this->shop();
                break;
        }
    }
}

请问各位大佬,你有没有合理的方案?

以下是反面案例

  1. app()->bind(),用此方法设置全局变量,在App\Exceptions\Handler获取,结果cli模式下报错了
  2. cache()->store(‘array’)->put(),此方法也是cli模式报错了!
让PHP再次伟大
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 10
JaguarJack

在每个模块定义的 BaseException,然后把模块的名称的写进去

class BaseException
{
    protected $modulename = 'shop'

   public function getModuleName()
  {
        return $this->modulename;
  }
}

模块内的 Exception 继承 Base。这样在 Handle 里面从 Exception 获取 moduleName 就可以了。

1年前 评论
勇敢的心 (楼主) 1年前
JaguarJack (作者) 1年前
勇敢的心 (楼主) 1年前
JaguarJack (作者) 1年前
勇敢的心 (楼主) 1年前
mouyong

大佬,换 fresns/plugin-manager 吧?地址:gitee.com/fresns/plugin-manager

安装 2.x 版本。

你使用的时候,可以考虑:

插件运行阶段通过中间件去接管掉默认的 exception 处理。

1年前 评论
勇敢的心 (楼主) 1年前
mouyong (作者) 1年前
勇敢的心 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!