Laravel Middlewareのhandleについて
Q&A
1. 【必須】やりたい・やりたかったこと
Middlewareのhandleの説明が、教材を見てもよくわからなかったので質問しました。
public function handle($request, Closure $next)
--- 実行する処理 ---
まず、第1引数の、$requestで、リクエストに関するRequestインスタンスがわたされると書いてあったのですが、これがよくわからなくて、一番下にある参考記事を元に調べたら、$requestの中にあるインスタンスを使えるようにするために書いてあるということがわかりました。
なので、第2引数のClosure $nextは、$requestの中にあるインスタンスの事なのかと思ったのですが、教科書で、$nextは、Closureクラスのインスタンスですと書かれていたので、$request関係ないものだった?となり、結局$requestが、どういう働きをしているのかよくわからないです。
また、$nextの説明で、ここで渡された$nextは、クロージャとなっており、これを呼び出して実行することで、Requestインスタンスを作成することができるとかいてあったのですが、これも意味がわからなくて、クロージャというのは、無名関数(関数の中身が空のもの)だったと思うのですが、だとすると、教科書に書いてあった、クロージャとなっており、これを呼び出して実行するという文で、中身が入っていない空の関数を実行しても何も起きない(中身に何も言っていないため)と思うのですが、なぜ、リクエストインスタンスをを作成することができるのかがわからないです。
ついでにいえば、ここで出てきたリクエストインスタンスというのは、$requestの中にあるインスタンスの事?だと思ったのですが、なぜ$requestの中にあるインスタンスを新たに作成しようとしているのかもよくわからないです。
以上の事から、handleの中の引数がなんなのかがまるでよくわからなくなってしまったため、質問いたしました。
参考記事