我们正在考虑将依赖注入容器集成到我们的项目中。我看过的每个 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 魔法?