【问题标题】:The callback of delegator factory returns null委托工厂回调返回null
【发布时间】:2023-03-10 15:10:01
【问题描述】:

我想用另一个服务包装一个现有的服务,所以,我发现有一个委托工厂机制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 类的实例。但相反,我得到了 null。

【问题讨论】:

    标签: php dependency-injection zend-framework ioc-container laminas


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-04-07
      • 1970-01-01
      • 2017-05-10
      • 2012-08-13
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多