PHP フレームワーク Laravel 8: ミドルウェア
ミドルウェアはメソッド Route::get(もしくは Route::post)の第 2 引数に渡す関数の呼び出しの前/後(リクエスト/レスポンス)に処理を加える機能です。
※ 以下のフォルダに Laravel をインストールしたこととする。
C:\Site01
|
|||||||
※ 以下のコマンドを実行し HTTP サーバを起動したこととする。
(ブラウザで「http://127.0.0.1/」へアクセスしたら表示される)
C:\Site01> php artisan serve
|
|||||||
1. | ミドルウェアを作成。以下のコマンドを実行する。 | ||||||
C:\Site01> php artisan make:middleware MyMiddleware | |||||||
2. | ミドルウェアの処理は以下のように追加する。 (MyMiddleware クラスの handle メソッドの内容) |
||||||
public function handle( Request $request, Closure $next )
{
// ここに処理を追加すれば Route::get 関数の第 2 引数へ渡した関数を
// 呼び出す前に処理される。(リクエストを変更する)
error_log( 'MyMiddleware: リクエストを変更' );
// リスエストを変更する場合は margin メソッドを呼び出す
$request->margin(
[
'pageTitle' => '○○○○',
] );
$response = $next( $request );
// ここに処理を追加すれば Route::get 関数の第 2 引数へ渡した関数を
// 呼び出した後に処理される。(レスポンスを変更する)
error_log( 'MyMiddleware: レスポンス変更' );
return $response;
} ); |
|||||||
3. | ミドルウェアの使用(その1)。 1つのルートに1つのミドルウェアを適用する。 |
||||||
|
|||||||
4. | ミドルウェアの使用(その2:グループ)。 複数のルートにまとめてミドルウェアを適用する。 |
||||||
|
|||||||
5. | ミドルウェアの使用(その3:グローバル)。 全てのルートにミドルウェアを適用する。 |
||||||
C:\Site01\Http\Kernel.php で定義している $middleware(Kernel クラスのプロパティ)にミドルウェアを追加する。 | |||||||
protected $middleware = [
// 省略
App\Http\Middleware\MyMiddleware::class, |
|||||||
|
|||||||
class MyController extends Controller
{
public function __construct()
{
$this->middleware( function( $request, $next )
{
$response = $next( $request );
return $response;
} )->except( ['index', 'user'] );
}
public function index() {
// 内容は省略
}
public function user() {
// 内容は省略
}
public function show() {
// 内容は省略
}
}
|
以上です。