PHPフレームワーク Laravel実践開発 2章 メモ

Chapter 2 サービスとミドルウェア

2-1 サービスとコンテナと結合

  • サービスコンテナ、DI概要
  • 単純なサービス作成と利用
  • コントローラー内での、サービスインスタンス化の方法、インスタンス化時の引数指定方法
  • ServiceProvider内で、サービスコンテナにサービスを関連付ける
  • 上記をシングルトンで行う
  • 上記にパラメータを渡す
  • サービスにインターフェースを導入する
  • サービス結合時に処理を行い、サービスインスタンスを操作する

2-2 ファサードの利用

  • サービスはサービスプロバイダーとセットで用意するのが基本
  • 作成: php artisan make:provider MyServiceProvider
    • register: サービスクラスを登録(bind、singletonなど)
    • boot: 登録したサービスの初期化を行う
    • /config/app.php:providers => へ MyServiceProvider::class を追記する
  • ファサード概要
  • ファサード作成
    • app\Facades ディレクトリ作成
    • 上記直下に MyService.php ファイル作成、Facade を継承、getFacadeAccessor() を定義、サービスエイリアス名を返す
    • config/app.php:aliases => へ、'myservice' => App\Facades\MyService::class を追記
    • MyServiceProvider: register() に app()->singleton('myservice', ~ を追記
  • MyService::setId($id) のように、クラス::メソッド() でサービスを利用できるようになる

2-3 ミドルウェアの利用

  • ミドルウェア概要
    • リクエストを拡張する仕組み
  • 作成: php artisan make:middleware MyMiddleware
  • 組込み: Route::get('', 'Controller@method')->middleware(XXX::class)
  • before/after
  • Global, Group, Route, Priority Middleware