我正在开发一个基于 Zend Framework 2 和 Doctrine 2 的应用程序。
我发现 2 天前,学说现在允许绑定实体侦听器来管理生命周期回调(如 prePersist、preUpdate、postLoad ......)
我在第一个模块中声明了一个实体(并为 Doctrine with Annotations 配置)。
在另一个模块中,我编写了一个我想以编程方式绑定到我的实体的 EntityListener。
我绝对不能在我的实体上使用注释“@EntityListeners({"MyListenerClass"})”,因为我的第一个模块需要保持独立于第二个(声明监听器的地方)
实际上,我尝试通过在侦听器的模块 bootstrap 中执行以下操作来绑定它:
$em = $e->getApplication()->getServiceManager()->get('Doctrine\ORM\EntityManager');
/* @var $em \Doctrine\ORM\EntityManager */
$entityListener = new EntityListener();
$entityListener->setServiceManager($e->getApplication()->getServiceManager());
$em->getConfiguration()->getEntityListenerResolver()->register($entityListener);
通过一些输出日志,我只是看到这种方式不起作用(我从未告诉过我的实体有一个实体监听器),也许这段代码不完整
现在有人如何在不使用配置(Annot、XML 或 YAML)的情况下绑定它?