サービスプロバイダ
https://readouble.com/laravel/10.x/ja/providers.html
- サービスプロバイダとは
- Laravelアプリケーション起動処理の初め。
- サービスコンテナによる結合やイベントリスナ・フィルター・ルートを登録すること
- サービスプロバイダの記述
- すべてのサービスプロバイダは
Illuminate\Support\ServiceProvider
クラスを拡張する -
register
とboot
メソッドをもつ-
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]; } }
- 、
-