大企業営業から未経験ITエンジニアを目指すブログ

アラサー大企業営業から未経験ITエンジニアを目指すブログ。日々学んだことを忘備録的に記します。

Laravel公式を読み解く 11. Laravel 5.5 契約(コントラクト)

・「契約」(コントラクト)とは

 インターフェイス。Laravelのコアコンポーネントで利用されている関数を定義している。中身はhttps://github.com/illuminate/contracts

要は、Laravel内のいろいろなクラスのテンプレート。

 

・契約 VS ファサード

 同じような機能だけど用途が違う?

 

・契約を使うメリット

 ①関数のタイプヒントをクラスではなく契約にすることで、疎結合なコードを実現できる。

 解説:Laravelは様々なパッケージで構成されるが、パッケージベンダーの具象キャッシュクラスに依存すると(利用先のクラスに注入すると)、パッケージのAPIインターフェイス)が変更されたときに、利用先のクラスも変更しないといけなくなる。

 利用先のクラスは、鍵穴ではなく、がば穴であるべき。(=多くを知りすぎてはいけない)

 

 ②単純である

  Laravelのサービスは全てシンプルなインターフェイスの中で適切に定義されている。よって、それらが実装された各機能も簡単に理解できる。

 

・契約の使用方法

多くのタイプのクラス(コントローラ、イベントリスナ、フィルター、キュージョブ、ルートクロージャ)がサービスコンテナを利用して依存解決されている。(多分どのインターフェースが呼ばれたらどのクラスをインスタンス化するのかがサービスコンテナに書かれている?)利用先のクラスでタイプヒントすれば使える。

 

https://readouble.com/laravel/5.5/ja/contracts.html