Zend framework2 ZF2中的getEventManager不工作
我有以下代码,可以从哪里获取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 $
<?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');