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

inotifyによる検知

以前、pynotifyというpythonの検知プログラムを書きましたが、元々はinotifyというLinux上のパッケージのライブラリが元になっています。 以前調べたリンク 監視検知処理に関して 実務 …

no image

cakePHPでの多対多について

cakePHPで多対多のリレーションを使う機会があったので、その時のメモなどを。 多対多を説明するときには例によってブログの投稿(Item)とタグ(Tag)の関係が一番わかりやすいですね。 Conte …

no image

フレームワークの基本的なアーキテクチャについて

フレームワークで大事なのは基本的な文法ではなく、構造の理解だと思います。 PHPですとCake,Laravel,Synfonyなどありますが、1つのものでしっかりと理解できていれば他のものもそれほど問 …

no image

cakePHP3インストール

PHP7に上がりましたが、それ以前にcakeがversion3になっていますね。 いずれはこれでリプレイスをしなくてはいけないので、今日とりあえずインストールしてみました。 原則としてcomposer …

no image

cakeでのトランザクション、コミット、ロールバック

cakePHP(2.X系)でのトランザクション、コミット、ロールバックについて。 cakePHPでトランザクションを書ける場合、Model内に [crayon-650d20fee5eda2902253 …

アーカイブ