Laravel公式を読み解く 8. Laravel 5.5 サービスコンテナ
【ポイント】
・なぜEloquentからデータ取得するのではなく、注入するのか。
「他の実装へ簡単に交換できます。さらに、「モック」することも簡単ですし、アプリケーションのテストでUserRepositoryのダミー実装を作成することもできます。」
・インターフェースに依存していないならば、コンテナでクラスを結合する必要はない。
←解決する文字列がクラス名&&具象クラスなら、結合処理をしていなくてもインスタンス化可能。
class Test {
//
}
$test = app()->make(Test::class); //これでインスタンス化可能!結合処理不要!
・依存解決の方法
①コンテナにアクセスできる場合
$api = $this->app->make('HelpSpot\API');
②コンテナにアクセスできない場合
$api = resolve('HelpSpot\API');
③依存しているクラスが、コンテナにより解決できない場合(??)
$api = $this->app->makeWith('HelpSpot\API', ['id' => 1]);
【不明点】
①コメントアウトの下記は何なのか?
@var
@param
@return
②「コンテナにオブジェクトを結合する方法を指示する必要はなく、リフレクションを使用してそのオブジェクトを自動的に依存解決します。」
リフレクションとは?
リフレクションは、プログラムの中でそのプログラムに含まれる型や変数/メソッドの情報を参照/操作できるようにする仕組みです。
http://tech.aainc.co.jp/archives/5165
⇒まだ分からない