1

我正在尝试Zend\EventManager\EventManager从 Di

$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'
),

克服这个错误的配置应该是什么?

4

1 回答 1

0

Zend\EventManager\EventManager不是有效的Zend\EventManager\SharedEventManagerInterface:使用 aZend\EventManager\SharedEventManager代替。

如果要注入共享事件管理器,请使用以下配置:

'di' => array( 
    'instance' => array(
        'preference' => array(
            'Zend\EventManager\SharedEventManagerInterface' 
                => 'Zend\EventManager\SharedEventManager',
        ),
    ),
),

这基本上会告诉每次请求泛型时Zend\Di使用 a 。Zend\EventManager\SharedEventManagerZend\EventManager\SharedEventManagerInterface

我在这篇博文中有一个工作示例。

于 2013-02-27T13:10:10.300 回答