使用自定义Doctrine 2数据类型的依赖注入

时间:2016-07-06 18:09:16

标签: php orm doctrine-orm symfony

我和Dependency injection with custom Doctrine 2 hydrator几乎完全相同,但我需要将服务注入自定义数据类型,而不是注入水分器。

引用问题中的解决方案依赖于复制和修改doctrine源代码,因为Doctrine会初始化类本身。希望另一种方法适用于自定义数据类型吗?

这适用于Symfony3应用程序,如果可以在那里应用一些魔法。

1 个答案:

答案 0 :(得分:2)

根据初始问题中的评论:

Doctrine实例化自定义数据类型的原因是什么。 doctrine的Type::addType($name, $className)方法只需要类名,而不是类的实例。您可以做的是在bundle扩展类中添加自定义doctrine类型,然后在kernel.request上注册具有所需依赖项的事件侦听器服务,并通过调用\Doctrine\DBAL\Types::getType($name)->setSomeDependency($dependency);将它们设置为您的数据类型。有点凌乱。

马蒂亚斯的文章很好找。扩展类的boot()方法看起来像是设置依赖项的更自然的地方。