Laravel 中间件的本质

看了那么多讲中间件的文章,基本了解大致原理,但是对 array_reduce + 双层匿名函数 的实现方法还是有点迷糊,个人觉得较直观的理解,可以把中间件拆成两步:

  1. array_reduce() 将所有的匿名函数压缩成一个,并放到一个变量 $a 保存,这个变量的实际形式用表达式描述就是 $a($a($a($initial, 1), $current), $current)()()()...(可用 var_dump 印证),每一个 () 代表每一层将要执行的匿名函数,有几个 () 代表要执行几层
  2. $a($a($a($initial, 1), $current), $current)()()()... 真正开始执行,从最外层开始,因为必须得获得第一个参数的实际值,所以必须要执行第一个参数 $a($a($initial, 1), $current),因此就表现为一层层往里执行
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3
Cooper

剥离出来的精简核心代码 github.com/huanghua581/middleware-...

2年前 评论
fatrbaby

本质就是一段一段可执行的php代码。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!