避免使用幻数而不创建依赖关系

Dan*_*Dan 8 php enums dependency-injection tightly-coupled-code

我正在为我正在开发的API创建一个错误管理器.这个想法是它提供了一个可以从API返回的错误代码存储,确保以相同的方式处理不同调用中的相同错误(例如,请求中缺少所需的值).

我最初的方法是:

$this->_errorManager->setError(ErrorCodes::REQUIRED_FIELD);
Run Code Online (Sandbox Code Playgroud)

但是,这会在我想要设置错误的任何地方创建对错误代码类的依赖.

替代方案是:

$this->_errorManager->setError(100);
Run Code Online (Sandbox Code Playgroud)

但是现在我的代码中间有一个数字,但没有任何意义.

虽然我可以想到这个特定问题的解决方案,但是在其他情况下我会想要使用"枚举"而我想不出一个没有紧密结合类的解决方案.

有没有更好的方法来做到这一点或采取不同的方法来消除魔数?或者是我必须接受并根据具体情况考虑的紧密耦合?

Fab*_*ler 4

这是所需的耦合。虽然让应用程序及其错误管理器松散耦合是一个好主意,但没有理由将应用程序及其错误代码分开,它们属于在一起

依赖项:

+-----------------------+
|Application error codes|<------------+
+-----------------------+             |
           ^                          |
           |                          |
+----------+----------+               |
|Application component|               |
+----------+----------+               |
           |                          |
           v                          |
+-----------------------+     +-------+-----+
|Error handler interface|<|---+Error handler|
+-----------------------+     +-------------+
Run Code Online (Sandbox Code Playgroud)