我在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
我如何才能使它发挥作用?
答案 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');