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)
但是现在我的代码中间有一个数字,但没有任何意义.
虽然我可以想到这个特定问题的解决方案,但是在其他情况下我会想要使用"枚举"而我想不出一个没有紧密结合类的解决方案.
有没有更好的方法来做到这一点或采取不同的方法来消除魔数?或者是我必须接受并根据具体情况考虑的紧密耦合?
这是所需的耦合。虽然让应用程序及其错误管理器松散耦合是一个好主意,但没有理由将应用程序及其错误代码分开,它们属于在一起。
依赖项:
+-----------------------+
|Application error codes|<------------+
+-----------------------+ |
^ |
| |
+----------+----------+ |
|Application component| |
+----------+----------+ |
| |
v |
+-----------------------+ +-------+-----+
|Error handler interface|<|---+Error handler|
+-----------------------+ +-------------+
Run Code Online (Sandbox Code Playgroud)