たけるのプログラミング

作ったものとか、気ままにアップします。

【Laravel】ミドルウェア1人勉強会_その1【PHP】

readouble.com

によると

ミドルウェア

  • アプリケーションへ送信されたHTTPリクエストをフィルタリングするものである。


基本的にアプリの流れは以下の通り

  1. クライアント(ブラウザ)がリクエス
  2. ルーティングからコントローラを呼び出し
  3. ビューをレンダリングして、レスポンスとしてクライアントへ返される

ここにミドルウェアが加わることにより以下のようになる

  1. クライアント(ブラウザ)がリクエス
  2. ミドルウェアの処理(Before)
  3. ルーティングからコントローラを呼び出し、
  4. ビューをレンダリングして、レスポンスを生成。
  5. ミドルウェアの処理(After)
  6. クライアントへレスポンスを返す。


今回はBeforeの処理について、簡単なプログラムを作る。

Beforeミドルウェアの例

artisanコマンド(php artisan make:middleware HogeMiddleware)を使い、ミドルウェアを作成する。
以下は、URLパラメータのnumberの値が0以下であった場合に、リダイレクト処理するものである。
もしif文に引っ掛からなかった場合、コントローラのアクションが実行される。

HogeMiddleware.php

<?php

namespace App\Http\Middleware;

use Closure;

class HogeMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if($request->number<=0){
            return redirect('other');
        }
        return $next($request);
    }
}

あとはミドルウェアを使う処理を設定するだけ
Web.php

Route::get('hoge','HogeController@index')->middleware(HogeMiddleware::class);

app/Http/Kernel.phpの$routeMiddlewareの配列に追加する。

'hoge'=>\App\Http\Middleware\HogeMiddleware::class,

また全リクエストで使いたかったら、
app/Http/Kernel.phpの$middlewareの配列に追加する。

readouble.com