Php ZF2和x2B;Doctrine2附加实体侦听器

Php ZF2和x2B;Doctrine2附加实体侦听器,php,orm,doctrine-orm,zend-framework2,Php,Orm,Doctrine Orm,Zend Framework2,我正在开发一个基于Zend Framework 2和Doctrine 2的应用程序 我在2天前发现,条令现在允许绑定实体侦听器来管理生命周期回调(如prePersist、preUpdate、postLoad…) 我在第一个模块中声明了一个实体(并配置为带有注释的条令) 在另一个模块中,我编写了一个EntityListener,希望通过编程方式将其绑定到我的实体 我绝对不能在我的实体上使用注释“@EntityListeners({“MyListenerClass”})”,因为我的第一个模块需要独立

我正在开发一个基于Zend Framework 2和Doctrine 2的应用程序

我在2天前发现,条令现在允许绑定实体侦听器来管理生命周期回调(如prePersist、preUpdate、postLoad…)

我在第一个模块中声明了一个实体(并配置为带有注释的条令)

在另一个模块中,我编写了一个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)的情况下绑定它了吗?

你知道怎么做吗?我不想冒险回答,因为我不确定,但我认为答案是:你必须有注释(或配置)。在我的几次实验中,我尝试了手动方法和/或注释,发现没有注释,仅手动方法无法工作。如果您确实确定了,您可以在实体中使用ZF事件管理器,而不是Doctrine和
trigger()