我正在开发一个基于Zend Framework 2和Doctrine 2的应用程序。
我在2天前发现,doctrine现在允许绑定实体监听器来管理生命周期回调(如prePersist,preUpdate,postLoad ......)
我在第一个模块中声明了一个实体(并为带有注释的Doctrine配置)。
在另一个模块中,我编写了一个EntityListener,我希望以编程方式绑定到我的实体。
我绝对不能在我的实体上使用注释“@EntityListeners({”MyListenerClass“})”,因为我的第一个模块需要独立于第二个模块(声明监听器的位置)
我实际上尝试通过在我的侦听器的模块引导程序中执行以下操作来绑定它:
$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)的情况下绑定它吗?