Dependency injection Zend Framework 2 Di创建不带参数的类

Dependency injection Zend Framework 2 Di创建不带参数的类,dependency-injection,zend-framework2,Dependency Injection,Zend Framework2,我在config中有以下代码: <?php return array( 'di' => array( 'instance' => array( 'alias' => array( 'sms_message' => 'Sms\Message', ), 'sms_message' => array( 'pa

我在config中有以下代码:

<?php
return array(
    'di' => array(
        'instance' => array(
            'alias' => array(
                'sms_message' => 'Sms\Message',
            ),
            'sms_message' => array(
                'parameters' => array(
                    'from' => 'SENDER',
                ),
            ),
        ),
    ),
);
但当我尝试加载它时,会得到未配置的对象:

var_dump($this->getLocator()->get('Sms\Message'));exit;

object(Sms\Message)[596]
    protected 'to' => null
    protected 'from' => null
    protected 'body' => null

如何使其工作?

对于setter注入,您必须使用
注入
关键字:

array(        
    'di' => array(
        'instance' => array(
            'alias' => array(
                'sms_message' => 'Sms\Message'
            ),
            'Sms\Message' => array(
                'injections' => array(
                    'setFrom' => array(
                        'from' => 'SENDER'
                    ),
                ),
            ),
        ),
    ),
);
我不确定实例配置是否应该使用别名。最好改用FQCN

我还发现,在复制示例时请求别名时,当前不会执行注入:

// The will call setFrom(...)
$di->get('Sms\Message);
// This will not call setFrom(...)
$di->get('sms_message');

我不知道这种行为是有意还是无意。(我将报告当前的情况)

您是否在不使用别名但仅使用FQN的情况下尝试了此操作?Afaik“别名”键也必须与配置的“实例”键处于同一级别。它实际上处于同一级别。只是格式不好。
// The will call setFrom(...)
$di->get('Sms\Message);
// This will not call setFrom(...)
$di->get('sms_message');