4
ContainerBuilder
を使用してコンテナを設定し、実際にContainer
を得るためにコンパイルする際に、依存関係と定義をセットアップしました。PHP-DI injectOnがセッターメソッドに注入されていません
injectOn()
メソッドのコンセプトが見当たりませんでしたか、ここで何か間違っていますか($this->translator
は未割り当てのままです)。私は、クラスをインスタンス化し、オブジェクトをContainerBuilder
に追加することと、同じ結果を持つ\DI\object()
の定義として渡すという、異なるアプローチを試みました。
あなたがリンクされ、マニュアルセクションでは、コンテナはタイプせずにオブジェクトをインスタンスコンストラクタ引数を示唆したシナリオを指します。私のオブジェクトにはコンストラクタがなく、手動でインスタンス化されます。それはまだ適用されますか? **編集:** http://php-di.org/doc/inject-on-instance.htmlこのマニュアルの節では '今、$オブジェクトは(セッターの注入とプロパティの注入を通して)すべての依存関係が注入されています。 ' – Daniel
ここで重要な点は、 "' setLogger() 'は呼び出されないということです。これは、オートワイヤリングはセッターではなく、コンストラクターでのみ動作すると仮定しています。依存関係を注入する必要があるクラスを手動でインスタンス化するのは悪い習慣です。コンテナから 'TextHandle'インスタンスを取得する必要があります。 –
あなたの編集に答えるには:このケースでは、コンテナ内の注射の適切な設定が必要です。 'injectOn()'を呼び出す前に、記述した方法で定義を追加してみてください。また、「ある状況では、オブジェクトの作成を制御できません」という文章は、私には非常に難解ですが、どうすればそれが可能かはわかりません。 –