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),因此就表现为一层层往里执行
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3
Cooper

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

4年前 评论
fatrbaby

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

4年前 评论

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