0
2

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 3 years have passed since last update.

【laravel】サービスプロバイダ

Last updated at Posted at 2020-04-15

概要

Laravelではサービスコンテナに登録されているサービスを利用してアプリケーションを開発します。

Laravelにはメールの送信、文字列の暗号、ファイル操作するといったサービスがあります。
これらのサービスは入れ物となるサービスコンテナへ事前に登録することで利用できるようになります。

そして、これらのサービスを登録する役目をもつものがサービスプロバイダです。

サービスプロバイダの作成

手作業でも作成できますがartisanコマンドを利用すればProvidersフォルダ内に自動でサービスプロバイダのファイルが作成されます。

コマンド
php artisan make:provider SampleServisProvider

ディレクトリ構造

app\Providers内に作成されます。
既存のファイルについては省略します。

ディレクトリ
app
├─ Providers
|  ├─ SampleServisProvider.php

作成されるファイル

生成されたファイルの中身は以下のようになっています。

ServiceProvider
namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class RiakServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

ServiceProviderの中身

サービスプロバイダはServiceProviderクラスを継承して作成され、registerとbootのメソッドが用意されます。
どちらのメソッドもvoid型です。

regiterメソッド

サービスプロバイダへ登録を行う処理のみを記述します。
他の処理を記述すると、サービスプロバイダがロードしていないサービスを意図せずに使用する原因になります。

ServiceProvider
public function register()
{
    // 登録したいサービスの処理を記述
}

bootメソッド

アプリケーションへのブートストラップ処理を記述します。
ブートストラップ処理とは、アプリケーションが起動する際に実行される処理のことです。
ここに処理を設定することで、ビューを生成する際に自動的にコンポーサーが呼び出されるようになります。

ServiceProvider
public function boot()
{
    // ブートストラップ処理を記述
}

サービスプロバイダの登録

作成したサービスプロバイダを実行できるようにアプリケーションへ登録します。
configフォルダにあるapp.phpに作成したサービスプロバイダクラスを追加します。

ディレクトリ
config
├─ app.php
app
'providers' => [
  // ...中略...
  App\Providers\EventServiceProvider::class,
  App\Providers\RouteServiceProvider::class,
// ここから
  App\Providers\SampleServiceProvider::class,
// ここまで
]

参考

Laravel 6.x サービスプロバイダ
Laravel サービスプロバイダついに理解

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?