我有一些Legacy类。 许多类都使用Factory类实例化。将依赖注入容器传递给静态方法
还有一个单身人士班。
未来我想用DIC完全替代它们。 目前代码库要做的很大。
现在我的目标是将DI容器注入到由Singleton类实例化的每个服务中。Singleton类有一个带有这个签名的静态方法。
final class Singleton
{
private static $singletonCache = array();
public static function getInstance($namespace, $className)
{
}
}
这个功能我想,以检查内部:
$instance = new $className();
if($instance instanceof ContainerAwareInterface)
{
// TODO: how do we get the container here
$instance->setContainer($container);
}
但我如何能最好地让我的“单级”,这是仅称为静态内部的容器?
'var_dump($ instance);'并检查你所得到的。 –
这是虚拟代码。我知道我到了那里。 我的问题是在静态方法“getInstance”的上下文中无法使用$ container。我如何从我的全球范围注入它? – psren
'$ instance-> setContainer($ container);'在这里你通过传递'$ container'参数来调用方法'setContainer'问问你自己,在使用之前你在哪里得到它? –