Zend framework2 ZF2中的getEventManager不工作

Zend framework2 ZF2中的getEventManager不工作,zend-framework2,Zend Framework2,我有以下代码,可以从哪里获取getEventManager,但似乎不起作用: <?php namespace Application\Service; use Zend\EventManager\EventManagerAwareInterface; use Zend\EventManager\EventManagerInterface; class ServiceUser implements EventManagerAwareInterface { protected $

我有以下代码,可以从哪里获取getEventManager,但似乎不起作用:

<?php
namespace Application\Service;

use Zend\EventManager\EventManagerAwareInterface;
use Zend\EventManager\EventManagerInterface;

class ServiceUser implements EventManagerAwareInterface
{

    protected $eventManager;

    public function insert($data)
    {
        $this->getEventManager()->trigger('user.new', $this, array('user' => $data));
    }

    public function setEventManager(EventManagerInterface $eventManager)
    {
        $eventManager->addIdentifiers(array(__CLASS__, get_called_class(), 'Module\User'));

        $this->eventManager = $eventManager;
        return $this;
    }

    public function getEventManager()
    {
        return $this->eventManager;
    }
}

如何构造
服务用户
对象?只有通过服务定位器构建
*Aware
接口时,这些接口才起作用

因此,您需要在配置中注册服务:

'service_manager' => array(
    'invokables' => array(
        'user-service' => 'My\Foo\Service\User',
    ),
),
然后通过服务定位器(例如,在控制器中)请求服务:


这将为您提供一个将事件管理器注入其中的服务

该服务运行良好,错误在于调用$this->getEventManager()->trigger()时。如果我不调用$this->getEventManager()->trigger(),那么支持部门工作得很好。服务管理器在根SM中有一个初始化器,用于为aware接口注入一个新的事件管理器,其中配置了共享管理器。因此,如果您使用正确设置的正确SM,它应该可以工作OTB。
$service = $this->getServiceLocator()->get('user-service');