• Laravel学习:请求到响应的生命周期


    Laravel请求到响应的整个执行过程,主要可以归纳为四个阶段,即程序启动准备阶段、请求实例化阶段、请求处理阶段、响应发送和程序终止阶段。

    程序启动准备阶段

    • 服务容器实例化

    服务容器的实例化和基本注册,包括了服务容器本身注册、基础服务提供者注册、核心类别名注册和应用的基本路径注册。注册的服务只是具体的类名,是通过反射机制来实例化对象,并且通过反射机制自动解决构造函数中的依赖关系。

    • 核心类实例化

    核心类实例化是服务容器实例化后,通过核心类别名注册服务来得到的服务容器自动实例化对象。如:index.php中的Kernel类实例化:

    
    $kernel = $app->make(IlluminateContractsHttpKernel::class);
    

    请求实例化阶段

    请求是客户端发送的一个请求报文,包括请求行、请求首部和请求实体。Laravel将其分类并保存在IlluminateHttpRequest类的实例对象中,也就是说将请求转化为一个实例对象。请求实例的创建是通过IlluminateHttpRequest类的capture()静态方法完成的,即:

    
    $request = IlluminateHttpRequest::capture();
    

    但在capture()方法中,可以看出Laravel的请求实例是在Symfony请求实例的基础上创建的。而Symfony是通过PHP的全局数组$_GET、$_POST、$_COOKIE、$_FILE和$_SERVER作为参数来实例化请求的。

    请求处理阶段

    请求处理阶段首先是准备请求处理的环境,包括环境加载、服务提供者注册等环节,然后将请求实例通过中间件处理及通过路由和控制器的分发控制,使得不同的请求通过相应的处理程序进行处理并生成响应的过程。

    响应发送和程序终止阶段

    • 响应发送

    Laravel的响应处理类是IlluminateHttpResponse类,该类的底层也是在Symfony的Response类。响应的发送包括两部分内容:响应头信息的发送和响应主体内容的发送。

    • 程序终止

    Laravel中,终止程序主要是完成终止中间件的调用。

    原文地址:https://segmentfault.com/a/1190000015838318

  • 相关阅读:
    旺财速啃H5框架之Bootstrap(二)
    Java 8 的 Nashorn 脚本引擎教程
    kindeditor4整合SyntaxHighlighter,让代码亮起来
    让kindeditor显示高亮代码
    css伪元素用法大全
    弹性布局基础讲解与高效应用
    美化页面,从我做起
    深度理解微信小程序的思想
    程序员提升之道-人际交往篇
    前端-网站构建从零开始
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9975568.html
Copyright © 2020-2023  润新知