概要
初期起動処理。
サービスコンテナの結合や、イベントリスナ、フィルタ、ルートなどを登録することを一般的に指す。
Laravelの場合、プロバイダクラスはconfig/app.php
内のproviders
配列に設定する。
記述
- 全てのサービスプロバイダは
ServiceProvider
クラスを拡張する -
register
とboot
メソッドを持つ -
register
メソッドの中ではサービスコンテナへの登録だけを行わなければならない -
make:provider
コマンドにより、新しいプロバイダが作成できる
php artisan make:provider HogeServiceProvider
registerメソッド
サービスコンテナに何かを結合することだけを行う。
Laravelにおけるサービスコンテナとは、クラスの依存関係を管理し、依存注入を実行するツール。
サービスプロバイダ内では$this->app
を介しコンテナにアクセスできる。
use App\Services\Hoge\Connection;
class HogeServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton(Connection::class, function ($app) {
return new Connection(config('hoge'));
});
}
}
上記はサービスコンテナ内のHoge/Connection
の実装を定義している。
singleton
メソッドは、クラスをコンテナにバインドするが、これは1回のみ依存解決される結合である。
シングルトン結合が依存解決されたらコンテナに対する後続の呼び出しで、
同じオブジェクトインスタンスが返される。
bootメソッド
ビューコンポーサをサービスプロバイダで登録する場合boot
メソッドを使用する。
ビューコンポーザとは、ビューをレンダリングする時に呼び出すメソッド。
このメソッドは他の全サービスプロバイダが登録し終えてから呼び出される。
public function boot()
{
View::composer('view', function () {
//
});
}