Laravel框架中如何深入理解和使用中间件middleware?
- 内容介绍
- 文章标签
- 相关推荐
本文共计962个文字,预计阅读时间需要4分钟。
这是一个简单的基于装饰器模式的管道。其本质是基于闭包和递归。
通过分析这个程序,对于最终生成的$a变量,它的值大概是这样的 MiddleStepOne.handle(MiddleStepTwo.handle(first)),当执行的时候因为在handle中有个next()函数的存在,所以这是一个递归的调用。对于laravel的中间件,他的实现原理也是和这个一样的。
2.laravel中的中间件和请求处理管道
在laravel中,我们我们可以通过设置中间件来在请求执行之前做一些预先的处理。
从请求入口 public/index.php开始
重要的是这段代码:即 处理请求,返回请求的响应
$response = $kernel->handle( $request = Illuminate\Http\Request::capture() //创建一个请求实例 );
接着我们进入kernel中看他的具体实现 IlluminateFoundationHttpKernel.php中
关于dispatchToRouter()函数请大家自己去看,这里就不多说了。
本文共计962个文字,预计阅读时间需要4分钟。
这是一个简单的基于装饰器模式的管道。其本质是基于闭包和递归。
通过分析这个程序,对于最终生成的$a变量,它的值大概是这样的 MiddleStepOne.handle(MiddleStepTwo.handle(first)),当执行的时候因为在handle中有个next()函数的存在,所以这是一个递归的调用。对于laravel的中间件,他的实现原理也是和这个一样的。
2.laravel中的中间件和请求处理管道
在laravel中,我们我们可以通过设置中间件来在请求执行之前做一些预先的处理。
从请求入口 public/index.php开始
重要的是这段代码:即 处理请求,返回请求的响应
$response = $kernel->handle( $request = Illuminate\Http\Request::capture() //创建一个请求实例 );
接着我们进入kernel中看他的具体实现 IlluminateFoundationHttpKernel.php中
关于dispatchToRouter()函数请大家自己去看,这里就不多说了。

