Laravel请求到响应的整个执行过程可以概括为四个阶段,即程序启动准备阶段、请求实例化阶段、请求处理阶段、响应发送和程序终止阶段。在程序启动准备阶段,实例化服务容器,服务容器的基础注册包括服务容器自身的注册、基础服务提供者的注册、核心类名的注册和类名的注册。应用程序的基本路径。注册的服务只是一个特定的类名,通过反射机制实例化对象,通过反射机制自动解析构造函数中的依赖关系。核心类实例化核心类实例化是服务容器实例化后通过核心类名注册服务得到的服务容器的自动实例化对象。例如:index.php中Kernel类的实例化:$kernel=$app->make(Illuminate\Contracts\Http\Kernel::class);请求实例化阶段的请求是客户端发送的请求消息,包括请求行、请求头和请求体。Laravel将其分类保存在Illuminate\Http\Request类的实例对象中,也就是说将请求转化为实例对象。request实例的创建是通过Illuminate\Http\Request类的capture()静态方法完成的,即:$request=Illuminate\Http\Request::capture();但是在capture()方法中,可以看出Laravel的Request实例是在Symfony请求实例之上创建的。Symfony通过传递PHP的全局数组$_GET、$_POST、$_COOKIE、$_FILE和$_SERVER作为参数来实例化请求。请求处理阶段请求处理阶段首先准备请求处理的环境,包括环境加载、服务提供者注册等,然后通过中间件处理请求实例,通过路由和控制器分发控制,让不同的请求通过相应的处理程序执行处理并生成响应的过程。响应发送和程序终止阶段Response发送Laravel的响应处理类是Illuminate\Http\Response类,这个类的底层也是Symfony的Response类。响应的发送包括两部分:响应头信息的发送和响应体内容的发送。程序终止在Laravel中,程序的终止主要是完成终止中间件的调用。
