2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravelサービスプロバイダ

Posted at

概要

初期起動処理。
サービスコンテナの結合や、イベントリスナ、フィルタ、ルートなどを登録することを一般的に指す。

Laravelの場合、プロバイダクラスはconfig/app.php内のproviders配列に設定する。

記述

  • 全てのサービスプロバイダはServiceProviderクラスを拡張する
  • registerbootメソッドを持つ
  • 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 () {
        //
    });
}

参考

Laravelドキュメント - サービスプロバイダ

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?