0

我想用另一个服务包装现有服务,所以,我发现有一个委托工厂机制https://docs.mezzio.dev/mezzio/v3/features/container/delegator-factories/

该服务非常简单,我主要将示例复制粘贴到文档中。

即使没有简化,服务看起来也像这样

class MoneyService {
    public function __constructor(LoggerService $logger) {
        $this->logger = $logger;
    }
}

为了检查委托工厂的工作情况,我像这样创建了它。只是为了确保正确构建了真正的服务。

class MoneyServiceDelegatorFactory
{

    public function __invoke(ContainerInterface $container, string $name, callable $callback)
    {
        var_dump($name, $callback());
        die;
    }
}

最后我用配置连接它

'dependencies' => [
    'delegators' => [
        MoneyService::class => [
            MoneyServiceDelegatorFactory::class,
        ],
    ],
],

如果我尝试检查容器是否有 MoneyService 实例,那么它是真的 - $container->has(MoneyService::class) === true

因此,在委托工厂中,我希望结果$callback()是 MoneyService 类的实例。但相反,我得到了空值。

4

1 回答 1

0

我已经弄清楚出了什么问题。我使用 PHP-DI,但在这种情况下,我添加了一个返回 MoneyService 实例的工厂。之后,在接下来的工厂中,它将由于以下原因而可用$callback()

于 2021-02-18T09:50:15.793 回答