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