Laravel Middleware 呼び出し順序ログ
Laravel の Middleware を2つ登録した場合に、リクエスト前後の処理がどのような順序で実行されるか確認するため、ログ出力してみた。
そのメモ。
<?php namespace App\Http\Middleware; use Closure; class Middle1 { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { logger("Middle1-before"); $response = $next($request); logger("Middle1-after"); return $response; } }
<?php namespace App\Http\Middleware; use Closure; class Middle2 { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { logger("Middle2-before"); $response = $next($request); logger("Middle2-after"); return $response; } }
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ \App\Http\Middleware\TrustProxies::class, \App\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\Middle1::class, \App\Http\Middleware\Middle2::class, ]; // 以下、省略
laravel.log
[2021-09-28 14:30:22] local.DEBUG: Middle1-before [2021-09-28 14:30:22] local.DEBUG: Middle2-before [2021-09-28 14:30:22] local.DEBUG: Middle2-after [2021-09-28 14:30:22] local.DEBUG: Middle1-after
以上