我正在使用Doctrine2和ZendFramework2。 我需要处理某些实体的生命周期事件,如下所述:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html 但我还需要在侦听器中使用一些额外的参数,或者至少需要Zend ServiceManager实例才能获取它们。 有没有办法在Doctrine监听器中安装Zend ServiceManager或将一些参数传递给它?
<?php
class ProductListener implements EventSubscriber
{
public function getSubscribedEvents()
{
return array(
'postUpdate',
);
}
public function postUpdate(LifecycleEventArgs $args)
{
$entity = $args->getObject();
$entityManager = $args->getObjectManager();
// need to pass additional parameters here like
$config = $this->getServiceLocator()->get('config');
}
}
答案 0 :(得分:0)
考虑实施ZF2的ServiceLocatorAwareInterface
。这需要通过服务管理器/定位器本身(以及模块/应用程序配置中的相关可调用/工厂声明)实例化您的侦听器,而不是像链接示例中所示直接新建它。
以下another question可能有助于理解魔法;)