我有这个代码,在哪里获取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;
}
}
生成的错误:
在
中的非对象上调用成员函数trigger()
答案 0 :(得分:0)
如何构建ServiceUser
对象? *Aware
接口仅在通过服务定位器构造它们时才起作用。
因此,您需要在配置中注册该服务:
'service_manager' => array(
'invokables' => array(
'user-service' => 'My\Foo\Service\User',
),
),
然后通过服务定位器(例如,在您的控制器中)请求服务:
$service = $this->getServiceLocator()->get('user-service');
这将为您提供注入事件管理器的服务。