如何阐述laravel中间件创建的思考方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1993个文字,预计阅读时间需要8分钟。
Laravel中间件提供了一种机制,在不修改逻辑代码的情况下,中断原程序流程。通过中间件处理事件或扩展功能,如日志中间件方便地记录请求和响应日志。
Laravel 中间件提供了一种机制在不修改逻辑代码的情况下,中断原本程序流程,通过中间件来处理一些事件,或者扩展一些功能。比如日志中间件可以方便的记录请求和响应日志,而不需要去更改逻辑代码。
那么我们简化一下软件执行过程,现在有一个核心类kernel,下面是它的laravel代码
#捕获请求 $request = Illuminate\Http\Request::capture() #处理请求 $response = $kernel->handle($request);
代码的作用是 捕获一个 Request ,返回一个 Response。这里面就是后续分发到具体执行逻辑的代码段并返回结果。
那么如果想在执行这个$kernel->handle()方法之前或者之后,增加一段逻辑一般会怎么写呢。大概如下:
$request = Illuminate\Http\Request::capture() function midware(){ before()#在之前执行的语句集合 ##### $response = $kernel->handle($request); ##### after()#在之后执行的语句集合 }
显然这样写没有问题,但是毫无拓展性可言,想执行什么东西都要更改这个方法,这种是不可能封装成框架核心内容的。怎么改进呢
定义一个要执行的中间件类叫middleware,类实现两个方法,before()和after()然后代码如下。
本文共计1993个文字,预计阅读时间需要8分钟。
Laravel中间件提供了一种机制,在不修改逻辑代码的情况下,中断原程序流程。通过中间件处理事件或扩展功能,如日志中间件方便地记录请求和响应日志。
Laravel 中间件提供了一种机制在不修改逻辑代码的情况下,中断原本程序流程,通过中间件来处理一些事件,或者扩展一些功能。比如日志中间件可以方便的记录请求和响应日志,而不需要去更改逻辑代码。
那么我们简化一下软件执行过程,现在有一个核心类kernel,下面是它的laravel代码
#捕获请求 $request = Illuminate\Http\Request::capture() #处理请求 $response = $kernel->handle($request);
代码的作用是 捕获一个 Request ,返回一个 Response。这里面就是后续分发到具体执行逻辑的代码段并返回结果。
那么如果想在执行这个$kernel->handle()方法之前或者之后,增加一段逻辑一般会怎么写呢。大概如下:
$request = Illuminate\Http\Request::capture() function midware(){ before()#在之前执行的语句集合 ##### $response = $kernel->handle($request); ##### after()#在之后执行的语句集合 }
显然这样写没有问题,但是毫无拓展性可言,想执行什么东西都要更改这个方法,这种是不可能封装成框架核心内容的。怎么改进呢
定义一个要执行的中间件类叫middleware,类实现两个方法,before()和after()然后代码如下。

