PHP依赖注入 - Pimple等 - 为什么使用关联数组而不是使用getter方法?

4 浏览
0 Comments

PHP依赖注入 - Pimple等 - 为什么使用关联数组而不是使用getter方法?

我们正在考虑将一个依赖注入容器集成到我们的项目中。我看过的每个DIC都使用了关联数组和/或魔术方法。例如,这是来自Pimple页面的一个示例:

$container['session_storage'] = function ($c) {
    return new $c['session_storage_class']($c['cookie_name']);
};
$container['session'] = function ($c) {
    return new Session($c['session_storage']);
};

这样做的原因是什么?我讨厌在代码中使用字符串,除非它们只是要在某个地方显示的字面字符串。这样会失去IDE的许多功能(这使得代码更难维护,而我们正试图避免这种情况!)。

我更喜欢像这样的方式:

class Container {
    function getSessionStorage()
    {
        return new $this->getSessionStorageClass($this->getCookieName);
    }
    function getSession()
    {
        return new Session($this->getSessionStorage());
    }
}

有没有不这样做的原因?我是否忽略了Pimple的一些魔法,如果我们选择这条路线,它将无法正常工作?

0