我正试图从Di
获得Zend\EventManager\EventManager
$di = new Di();
$di->configure(new Config(array(/*etc*/));
$events = $di->get('Zend\EventManager\EventManager');
但是我收到此错误
致命错误:未捕获的异常'Zend \ Di \ Exception \ RuntimeException',消息'类型为“无效的实例化器”为“Zend \ EventManager \ SharedEventManagerInterface”的“NULL”。'
我相信这是因为EventManagerInterface扩展了SharedEventManagerInterface?
我试过了
'preferences' => array(
'Zend\EventManager\SharedEventManagerInterface'
=> 'Zend\EventManager\EventManager',
),
并定义实例化器
'Zend\EventManager\SharedEventManagerInterface' => array(
'instantiator' => 'Zend\EventManager\EventManager::__construct'
),
该错误会导致什么配置?
答案 0 :(得分:0)
Zend\EventManager\EventManager
不是有效Zend\EventManager\SharedEventManagerInterface
:请改用Zend\EventManager\SharedEventManager
。
如果要注入共享事件管理器,请使用以下配置:
'di' => array(
'instance' => array(
'preference' => array(
'Zend\EventManager\SharedEventManagerInterface'
=> 'Zend\EventManager\SharedEventManager',
),
),
),
每次请求通用Zend\Di
时,基本上会告诉Zend\EventManager\SharedEventManager
使用Zend\EventManager\SharedEventManagerInterface
。
我在this blogpost中有一个工作示例。