Bindings
Ray.Diにおける束縛の概要
束縛とは、Ray.Di map のエントリに対応するオブジェクトのことです。束縛を作成することで、Ray.Diマップに新しいエントリーを追加できます。
束縛の作成
束縛を作成するには、AbstractModule
を継承して configure
メソッドをオーバーライドします。メソッド本体では、bind()
を呼び出してそれぞれの束縛を指定します。これらのメソッドはコンパイル時に型チェックを行い、間違った型を使用した場合はエラーを報告します。モジュールを作成したら、それを Injector
に引数として渡し、インジェクターを構築します。
モジュールを使って、リンク束縛、 インスタンス束縛、 プロバイダー束縛、 コンストラクター束縛、 アンターゲット束縛を作成しましょう。
class TweetModule extends AbstractModule
{
protected function configure()
{
$this->bind(TweetClient::class);
$this->bind(TweeterInterface::class)->to(SmsTweeter::class)->in(Scope::SINGLETON);
$this->bind(UrlShortenerInterface)->toProvider(TinyUrlShortener::class);
$this->bind('')->annotatedWith(Username::class)->toInstance("koriym");
}
}
その他の束縛
インジェクターは指定した束縛の他に ビルトイン束縛 と プロバイダー注入 の束縛も含みます。
モジュールのインストール
モジュールは、他のモジュールをインストールすることで、より多くの束縛を設定できます。
- 同じ束縛が後から作られた場合、先に作られた束縛が優先されます。
- そのモジュールの
override
束縛が優先されます。
protected function configure()
{
$this->install(new OtherModule);
$this->override(new CustomiseModule);
}