PHP-DI

2016-09-19 5 views
0

を使用して定義済みのパラメータをコンストラクタに挿入する際に問題が発生するこれは初歩的なことかもしれませんが、注釈を使用せずにクラスコンストラクタにパラメータを直接注入するようです。以下は作ら定義とPHP-DI

$shell->set('root','[Root Definition Here]'); 

    $shell->make('Namespace\To\Product'); 

    Class Product{ 

      public function __construct($root){ 
       //coding continues here 
      } 
    } 

と呼ばれるクラスであるしかし、私は、 『製品を\に名前空間\』が解決できないこのエラーにメッセージ「エントリ と

キャッチされない例外「例外」を得続ける: パラメータを__construct()の$ rootには値が定義されていないか、推測できません

注釈を使用するとこの問題は解決します。しかし、私は実際に注釈をパラメータに注入するたびに頼りにしたくありません。

ここで問題は何ですか?

おかげ

答えて

0

PHP-DIはタイプヒントではなく、パラメータ名を使用して注入します。したがって、$rootにタイプヒント(たとえばFoo\Bar $root)がある場合は機能しますが、現在は動作しません。あなたが手動でパラメータを定義する必要が

$container->set(
    'Namespace\To\Product', 
    DI\object()->constructor(DI\get('root') 
); 
+0

[OK]を、それを得たが、私のクラスは、その場にロードされている、ワイルドカードをここで使用することができます方法について説明します。ありがとう –