【发布时间】: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