一个 Laravel 请求的完整生命周期


为什么生命周期不在第一节开始讲,就怕如果不理解所谓的IoC、Facade、中间件之类的概念,生命周期理解起来生命周期理解出来可能有一定的难度。

源码剖析

Laravel 应用的所有请求入口都是 public/index.php 文件。打开index.php 发现代码也就几行。

下面我们来讲一下每一句代码的作用是什么?

打开__DIR__.'/../bootstrap/app.php';你会发现这段代码,绑定了Illuminate\Contracts\Http\Kernel::class,这个你可以理解成之前我们所说的$ioc->bind();方法。

走到这里你会发现,是不是在我们学会了IoC,服务提供者理解起来就比较简单了。那$middleware,服务提供者都是在哪个文件注册运行的呢?

打开App\Http\Kernel::class这个文件,你会发现定义了一堆需要加载的$middleware。这个kernel的主要方法还是在他的父类里面 Illuminate\Foundation\Http\Kernel中。

打开Illuminate\Foundation\Http\Kernel,你会发现定义了启动时需要做的事呢?

$bootstrappers 就定义了我们的RegisterFacades.class,RegisterProviders.class 这两个类的意思就是要讲我们在app.config 中的Providers、Facades 注入到我们的 IoC 容器中。具体是怎么执行的,我们下来可以打断点调试。


<< 上一篇: Laravel 中间件、管道之面向切面编程

>> 下一篇: Laravel 事件之观察者模式