1

Zend\EventManager\EventManagerDi から aを取得しようとしています

$di     = new Di();
$di->configure(new Config(array(/*etc*/));
$events = $di->get('Zend\EventManager\EventManager');

ただし、このエラーが発生します

致命的なエラー:「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:Zend\EventManager\SharedEventManager代わりに a を使用してください。

共有イベント マネージャーを挿入する場合は、次の構成を使用します。

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

これは基本的に、ジェネリックが要求されるたびに aZend\Diを使用するように指示します。Zend\EventManager\SharedEventManagerZend\EventManager\SharedEventManagerInterface

このブログポストに実際の例があります。

于 2013-02-27T13:10:10.300 に答える