skillup

技術ブログ

PHP

Laravelのミドルウェアについて

投稿日:2018年2月11日 更新日:

以前からLaravel(ララベル)を使っていてわかりにくかったミドルウェアについてめも。

Laravelは一般的にはMVCフレームワークと言われていますが、コントローラーがリクエストを受け取り、何らかのアクションを起こすまで、あるいはアクションが起こってから、レスポンスを返すまでのレイヤー層の動きを「ミドルウェア」と言います。

基本的には全ページに共通な処理(認証)なんかをこれに入れると良さげ。全アクションの共通処理に使えます。

例えばフォームの値を受け取って、それをチェックすような仕組み、というものはコントローラーに書かずに別の部分が担当します。これがミドルウェアの働きです。

例えば認証の操作をする場合も、このミドルウェアが使われています。

*ちなみに自作することも可能です。参考文献を見て見ましょう。

独自ミドルウェアの作成

独自のmiddlewareを作成する場合、下記コマンドで自動生成できます。

SampleMiddelware.php

グローバルミドルウェア

上記のように特定のページだけではなく全てのリクエスト(orレスポンス)時に動くミドルウェアがあり、これをグローバルミドルウェアと呼んでいます。

これを制御しているのがapp/Http/Kernel.phpです。

グローバルミドルウェアは通常だと下記のように定義されています。ここに登録されているものが共通で使われているミドルウェアです。一般的にはここに登録することが一般的のようです。

ミドルウェアのグループ登録

多数のミドルウェアを使うようになると、複数のミドルウェアを一つにまとめて扱えるようにすると管理が楽になります。

ミドルウェアはグループとして扱うこともできます。

例えば下記のような記述はルーティングでwebと呼び出せば、列挙されているミドルウェアが全て使うことができるようになります。

ミドルウェアの呼び出し(どのページで有効になるか?ルーティングの設定など)

実際に認証の際に、middlewareを呼び出す場合はrouting時に呼び出すことにします。認証のmiddlewareはauthで呼び出せます。

参考文献

PHP Laravelフレームワーク入門 P108〜

Laravelのミドルウェアの実施順検証と小技

-PHP
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

PHPにおけるDI

Contents1 DIについての概要2 自分が作った簡単なサンプル(リンクの写経)3 参考リンク DIについての概要 PHPでのDI(Dependency Injection)に関して。 オブジェク …

no image

PHPの無名関数+array系の関数

PHPの無名関数について。 PHP5.3.0以降で実装され、概念としては知っていましたが、あまり使ったことがありませんでした。 今開発しているPHPの案件で無名関数のソースをみたので、復習もかねてメモ …

no image

eagar loading vs lazy loading

以前DBからのデータ取得問題でディフォルトだとlazy loadingが発生し、俗にいうN+1問題が発生するので、eagar loadingにすべきみたいな記事を書きました。 joinとeager l …

no image

cakePHPでの直SQL

今回はCakePHPにて直のSQLを書く方法を。 cakePHPにて大概の処理はもともと備わっているコマンドでなんとかなりますが、まれに直SQLを書いたほうがらくなこともあります。 書き方その1 [c …

no image

PHPでの切り上げ誤差問題

PHPを初めて、4年近くたちますがいまだに知らんことが多いですね(爆) 本日は、

になるという非常にビックリな仕様に遭遇・・・ なにや …

アーカイブ