Laravel/サービスコンテナをわかりやすく理解する入門

本記事の対象者

Laravelを少し触ってきてある程度使い方はわかってきたが、
Laravelの動作の中身がどのようになっているのかわかっていない人を対象としています。
ここでは少し触っているというのがミソで、まだ全く触っていない。といったりプログラミング経験がないという方は読んでもよくわからないと思うのでおかえりください。

サービスコンテナはlaravelの仕組みをまなぶうえで重要な概念です。ある程度できるようになったら是非ともその理解をしてみてください。

ずばり、サービスコンテナとは?

サービスコンテナとは、
laravelで使用する様々な用途のインスタンスの生成方法を登録しておいて(バインド)、使用する際にサービスコンテナがインスタンスを生成して返す(解決する)というプロセスです。

つまり、サービスコンテナとは

new Sampleといった形でインスタンス化するのと同じように、

app->make(’Sample’)の形でインスタンスを呼び出すことができるというイメージなのです。

1,Bindして、

2,make()で取り出す

この2プロセスのみを理解するだけでサービスコンテナは理解ができます。

バインドの種類

1,Bindメソッド

2,bindifメソッド

3,singletonメソッド

4,instanceメソッド

5,Whenメソッド

バインドには上記のような種類がありますが、
基本的な理解としては、サービスコンテナに登録するという理解で問題ありません。詳しくはまた別途解説いたします。

コードで見てみるサービスコンテナ

まずは下記のコードを見てください。

class Sample{
      public function doSomething(){
      
     }
}

app()->bind(Sample::class, function(){
     return new Sample();
}) //①

$sample1 = app()->make(Sample::class); //②
$sample1->doSomething();

①でbind処理をして、サービスコンテナに登録をして、
②でSampleクラスの解決をしています。
先ほどインスタンスの生成と同じといったのは、最後の一行でdoSomething()というメソッドを実行していることをみることで納得できますね。

まとめ

Laravel公式だと難しく書いてあってよくわからなくなる方が、多いですし、私自身も以前はよくわかりませんでした。
ですが、上記のような理解をしてから、読み進めることで理解をすることができました。理解の難しい概念は少し単純化してから理解を進めると良いでしょう。

コメントを残す