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