サービスコンテナ
なんか書き方が豊富で混乱してきたので、整理したい
サービスコンテナとは
- フレームワークは多くのクラスによって構成されている
- コントローラやモデルもクラス
- クラスのインスタンスを管理するのが、サービスコンテナ
サービスコンテナの実体
Illuminate\Foundation\Applicationクラス
インスタンスの生成
まずはPHPでの書き方をおさらい
$hoge = new \App\Services\HogeService();
インスタンスの取得
// app関数から取得する
$app = app();
// Application::getInstanceメソッドから取得
$app = \Illuminate\Foundation\Application::getInstance();
// Appファサードから取得
$app = \App::getInstance();
インスタンスの取得&生成
makeメソッド
app()->bind(Number::class,function(){
return new Number();
});
// app関数から取得する
$number1 = app()->make(Number::class);
// Application::getInstanceメソッドから取得
$number2 = \Illuminate\Foundation\Application::getInstance()->make(Number::class);
// Appファサードから取得
$number3 = \App::getInstance()->make(Number::class);
app ヘルパ関数
app()->bind(Number::class,function(){
return new Number();
});
$number4 = app(Number::class);
引用
参考