我和Dependency injection with custom Doctrine 2 hydrator几乎完全相同,但我需要将服务注入自定义数据类型,而不是注入水分器。
引用问题中的解决方案依赖于复制和修改doctrine源代码,因为Doctrine会初始化类本身。希望另一种方法适用于自定义数据类型吗?
这适用于Symfony3应用程序,如果可以在那里应用一些魔法。
答案 0 :(得分:2)
根据初始问题中的评论:
Doctrine实例化自定义数据类型的原因是什么。 doctrine的Type::addType($name, $className)
方法只需要类名,而不是类的实例。您可以做的是在bundle扩展类中添加自定义doctrine类型,然后在kernel.request
上注册具有所需依赖项的事件侦听器服务,并通过调用\Doctrine\DBAL\Types::getType($name)->setSomeDependency($dependency);
将它们设置为您的数据类型。有点凌乱。
马蒂亚斯的文章很好找。扩展类的boot()
方法看起来像是设置依赖项的更自然的地方。