我正在构建一个 PHP 库,该库在遇到错误时会引发各种自定义异常。我需要记录这些异常并提供 Logger 的各种实现,以便它们可以记录在文件或数据库中。
无论是否捕获异常,都需要记录这些异常,这样就排除了在自定义异常处理程序中实现任何这些。因此,需要在自定义异常类本身的构造函数中触发日志记录。
我还需要使用 phpUnit 对异常触发 Logger 进行单元测试。
Exception 对象访问 Logger 对象的最佳方式是什么?
我的想法/建议包括:
1)将选择的logger实现对象(或者在测试Exception类时为Mock对象)注入到抛出异常的对象中,然后这些对象在抛出每个新的异常时将Logger对象注入到构造函数中。尽管 Logger 对象在各处传递,这可能会有点混乱。
2)使用策略或工厂模式(我已经阅读了这些概念,但我不确定在这种情况下如何实现这些)。