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