请问请求开始穿透中间件层,返回的响应我不太理解。
上图是我根据文中的洋葱自己描述的一个请求中间层洋葱。省略了不需要理解的代码。便于观看。
从外向里执行,可以看到多个return。
问题1:
如果在执行某个中间件时不满足条件,抛出异常是不是就终止执行了。
问题2:
执行穿透成功,进行请求分发和内部代码的执行。那么内部代码的返回值是不是在从里到外的返回回来,最终在由
这句代码来返回。
问题3:
困扰我是这一段代码。在穿透过程中,这段代码是怎么执行的,每次穿透返回的是什么?
如果在穿透过程中,遇到异常,的确是终止执行,抛出异常。
是最终由
return $pipeline($this->passable)
返回响应的。并且 Laravel 的执行顺序是 Request 由外往里,在最里面获得 Response,再由里往外返回。以最上面和最里面的
return $callable($passable)
为例。关于
$slice
返回的内容,具体看父类 carry 方法有没有对$slice
形参进行函数执行操作。如果进行了执行,那么结果如上图所示,如果没有执行,那么一路返回的是 包含 Response 的一个闭包函数,最终一定在外面进行了 Response 获取。