Laravel 中间件的本质
看了那么多讲中间件的文章,基本了解大致原理,但是对 array_reduce + 双层匿名函数
的实现方法还是有点迷糊,个人觉得较直观的理解,可以把中间件拆成两步:
array_reduce()
将所有的匿名函数压缩成一个,并放到一个变量$a
保存,这个变量的实际形式用表达式描述就是$a($a($a($initial, 1), $current), $current)()()()...
(可用 var_dump 印证),每一个()
代表每一层将要执行的匿名函数,有几个()
代表要执行几层$a($a($a($initial, 1), $current), $current)()()()...
真正开始执行,从最外层开始,因为必须得获得第一个参数的实际值,所以必须要执行第一个参数$a($a($initial, 1), $current)
,因此就表现为一层层往里执行
推荐文章: