【发布时间】:2016-11-08 21:52:01
【问题描述】:
我有与Dependency injection with custom Doctrine 2 hydrator 几乎相同的问题,但我需要将服务注入自定义数据类型,而不是注入水合器。
引用问题中的解决方案依赖于复制和修改教义源代码,因为教义初始化类本身。希望另一种方法对自定义数据类型可行?
这是一个 Symfony3 应用程序,如果可以在那里应用一些魔法的话。
【问题讨论】:
-
让这件事变得困难的是 Doctrine 如何实例化自定义数据类型。教义的
Type::addType($name, $className)方法只需要类名,而不是类的实例。您可以做的是在您的 bundles 扩展类中添加您的自定义原则类型,然后在kernel.request上注册一个具有所需依赖项的事件侦听器服务,并通过调用\Doctrine\DBAL\Types::getType($name)->setSomeDependency($dependency);将它们设置为您的数据类型。不过有点乱。 -
@ChadSikorra 这类似于我在发布问题后发现的方法here,没有事件侦听器。我现在正在尝试这个,它看起来很有希望。添加您的评论作为答案,我会接受。
标签: php orm doctrine-orm symfony