0
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

サービスプロバイダ

https://readouble.com/laravel/10.x/ja/providers.html

  • サービスプロバイダとは
    • Laravelアプリケーション起動処理の初め。
    • サービスコンテナによる結合やイベントリスナ・フィルター・ルートを登録すること
  • サービスプロバイダの記述
    • すべてのサービスプロバイダはIlluminate\Support\ServiceProviderクラスを拡張する
    • registerbootメソッドをもつ
      • registerメソッドの中ではサービスコンテナへの登録だけを行う
    • コマンドでひな形を作成可能 php artisan make:provider RiakServiceProvider
  • プロバイダの登録
    • サービスプロバイダはconfig/app.phpで登録される
    • サービスプロバイダの名前をリストしているproviders配列に追加する
  • 遅延プロバイダ
    • サービスコンテナへコンテナ結合を登録するだけであるなら、その結合が実際に必要になるまで登録を遅らせる方が良い

      • \Illuminate\Contracts\Support\DeferrableProviderインターフェイスを実装し、providesメソッドを定義する
      <?php
      
      namespace App\Providers;
      
      use App\Services\Riak\Connection;
      use Illuminate\Contracts\Foundation\Application;
      use Illuminate\Contracts\Support\DeferrableProvider;
      use Illuminate\Support\ServiceProvider;
      
      class RiakServiceProvider extends ServiceProvider implements DeferrableProvider
      {
          /**
           * 全アプリケーションサービスの登録
           */
          public function register(): void
          {
              $this->app->singleton(Connection::class, function (Application $app) {
                  return new Connection($app['config']['riak']);
              });
          }
      
          /**
           * このプロバイダにより提供されるサービスの取得
           *
           * @return array<int, string>
           */
          public function provides(): array
          {
              return [Connection::class];
          }
      }
      
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?