gpt4 book ai didi

php - 将依赖注入(inject)容器传递给静态方法

转载 作者:可可西里 更新时间:2023-11-01 00:30:30 25 4
gpt4 key购买 nike

我有一些传统类(class)。许多类是使用工厂类实例化的。

还有一个单例类。

将来我想用 DIC 完全取代它们。目前代码库很大,无法做到这一点。

现在我的目标是将 DI-Container 注入(inject)到 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);
}

但是我怎样才能最好地将容器放入我的“单例类”中,它只被静态调用?

最佳答案

另一种方法是在需要时全局访问容器:

public static function getInstance($namespace, $className)
{
$container = $_GLOBAL['kernel']->getContainer();
}

当然,这种方法存在一些问题,但只要您正在过渡,就足够了。

关于php - 将依赖注入(inject)容器传递给静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com