依存性注入コンテナをプロジェクトに統合することを検討しています。私が見たすべての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());
}
}
これをしない理由はありますか?このルートに行くと機能しないにきびの魔法が欠けていますか?