Zend Framework 2 Di创建没有参数的类

时间:2012-06-25 16:10:44

标签: dependency-injection zend-framework2

我在config中有以下代码:

<?php
return array(
    'di' => array(
        'instance' => array(
            'alias' => array(
                'sms_message' => 'Sms\Message',
            ),
            'sms_message' => array(
                'parameters' => array(
                    'from' => 'SENDER',
                ),
            ),
        ),
    ),
);

在Message.php类中我有一个setter(我不想使用contructor):

/**
 * From
 * @var string
 */
protected $from;

/**
* @param string $from
*/
public function setFrom($from)
{
    $this->from = $from;
}

但是当我尝试加载它时,我得到了未配置的对象:

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

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

我如何才能使它发挥作用?

1 个答案:

答案 0 :(得分:0)

对于二传手注射,您必须使用injections关键字:

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');

我不知道这种行为是否有意。 (我会报告此test,目前为failing