LoginSignup
0
0

More than 3 years have passed since last update.

LaravelにおけるServiceProviderについて、可能な限り簡潔に説明する

Last updated at Posted at 2020-05-23

背景

最近、「ServiceProviderとは?使い方や使い道など」に関する質問を頂いた。
これに対して説明されているページを紹介して終了、がベストなのだが、Laravel初心者にも使い方が伝わるような簡潔な説明が見当たらないため、ここに私が出来る可能な限り簡潔な説明を記しておく。

説明

これがあると何が出来るか

あるサービスインスタンスに予め初期設定パラメータをセットしておき、アプリケーションのどの処理でもセット済のサービスインスタンスを使用することができる。

DBのホスト,ポート番号,ユーザー名,パスワード,DB名
※以下は実際とは異なるが、説明を分かりやすくするために敢えてこうしている

ServiceProvider.php
public function register()
{
    // ここでサービスコンテナに「db」という名前でインスタンスを格納しておく
    // ※「サービスコンテナ」については後述
    $this->app->singleton('db', function ($app) {
        // ここで初期設定パラメータをセットする
        return new DatabaseManager(
            config('database.host'),
            config('database.port'),
            config('database.username'),
            config('database.password'),
            config('database.database')
        );
    });
}
$users = resolve('db') // ServiceProviderで予め「db」という名前でコンテナに格納したインスタンスを取得する
    ->table('users')
    ->all();

サービスコンテナ

あるサービスインスタンスを設定パラメータのセットが済んだ状態で格納しておくところ。

おさらい

ServiceProviderは主に外部サービスを利用するためのサービスインスタンスを、設定パラメータのセットをしてサービスコンテナに登録しておくものである。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0