如果某个类需要一些xml配置值才能执行操作,则以下哪项最佳:
我目前正在使用选项3:
class MyClass
{
private $config;
const CONFIG_XML_PATH = '/xml/path/to/my/config/node'
public function __construct($configLoader)
{
$this->config = $configLoader->load(self::CONFIG_XML_PATH)
}
public function doAmazingThingUsingConfig()
{
}
}
这是正确的方法吗?还是有更好的方法?
答案 0 :(得分:0)
我的建议
恕我直言,需要构建的类不应该负责创建和加载它自己的依赖项。
应该在类外部创建依赖项,然后使用任何类型的依赖项注入将其传递给类。
此外,与这种情况相比,这类课程的测试更容易编写和验证。当然,在这里你也可以通过模拟configLoader来编写测试,但为什么通过模拟我们是否可以通过正常注入来实现: - )
对您的方法的建议
如果你真的想要采用你的方法,那么至少要抽象出配置加载类不要直接使用文件(这样你也可以用其他方式加载配置)
我建议取消const变量并将函数调用更改为:
$ configLoader-> loadMyClassConfig();