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?

Laravel12のミドルウェアの検証

Last updated at Posted at 2025-05-24

はじめに

本記事はLaravel12でのミドルウェアの動きを検証するために行なった。

前回の環境構築から続けて作業を行う。
https://qiita.com/pig_buhi555/items/530b1d6d44ec3de62890

以下のURLにアクセスした時、ログ出力しミドルウェアの動きの検証を行う。
http://localhost:8000/

1. ソース

laravel12/bootstrap/app.php
<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use App\Http\Middleware\AppendMiddleware;
use App\Http\Middleware\CustomEmptyStringsToNull;
use App\Http\Middleware\PrependMiddleware;
use Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        /*** ここに使用するMiddleware記載 ***/
        /*** php artisan make:middleware ミドルウェア名 で作成 ***/
        // 最初に追加
        $middleware->prepend(PrependMiddleware::class);
        
        // 最後に追加
        $middleware->append(AppendMiddleware::class);
        // デフォルトのミドルウェアの書き換え
        $middleware->replace(ConvertEmptyStringsToNull::class, CustomEmptyStringsToNull::class);

        // ミドルウェア削除(例. PrependMiddleware)
        $middleware->remove(PrependMiddleware::class);
        // PrependMiddlewareは実行されない
        $middleware->prepend(PrependMiddleware::class);
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();
laravel12/app/Http/Middleware/AppendMiddleware.php
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class AppendMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next): Response
    {
        logger('AppendMiddleware');
        return $next($request);
    }
}
laravel12/app/Http/Middleware/CustomEmptyStringsToNull.php
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class CustomEmptyStringsToNull
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next): Response
    {
        logger('CustomEmptyStringsToNull');
        return $next($request);
    }
}
laravel12/app/Http/Middleware/ReplaceMiddleware.php
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class ReplaceMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next): Response
    {
        logger('ReplaceMiddleware');
        return $next($request);
    }
}

2. URLにアクセス

3. ログ

laravel12/storage/logs/laravel.log
[2025-05-24 07:25:40] local.DEBUG: CustomEmptyStringsToNull  
[2025-05-24 07:25:40] local.DEBUG: AppendMiddleware  

4. 参考サイト

ありがとうございました。
https://zenn.dev/naopusyu/articles/86222755fb7168

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?