1

私はconfigに次のコードを持っています:

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

そしてMessage.phpクラスに私はセッターを持っています(私は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

どうすればそれを機能させることができますか?

4

1 に答える 1

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

この動作が意図されているかどうかはわかりません。(現在失敗しているこのテストを報告します)

于 2012-07-01T22:38:48.983 に答える