• ThinkPHP5框架的生命周期:从发出请求到响应完成


    URL请求的生命周期
    客户端通过URL发送访问请求
    服务器端返回请求数据

    TP5的生命周期
    入口文件-->引导文件-->注册自动加载-->注册错误和异常机制-->应用初始化-->URL访问检测-->路由检测-->分发请求-->响应输出-->应用结束

    1.入口文件
    -1.文件名:index.php;
    -2.位置:public/index.php;
    -3.用户通过入口文件,发起服务请求,是整个应用的入口与起点;
    -4.任务:定义常量,加载引导文件,不要放任何业务处理代码;
    -5.代码: //定义项目路径
    define('APP_PATH',DIR.'/../application/');
    //加载框架引导文件
    require DIR.'/../thinkphp/start.php';

    2.引导文件
    -1.文件名:start.php;
    -2.位置:thinkphp/start.php;
    -.执行: 加载常量-->加载环境变量-->注册自动加载-->注册错误与异常-->加载管理配置-->执行应用

    3.注册自动加载
    -1.类方法:Loader::register();
    -2.作用:将所有符号规范的类库(包括Composer依赖加载的第三方类库)自动加载;
    -3.执行流程: 注册自动加载方法: think\Loader::autoload --> 注册系统命名空间 --> 加载类库映射文件 --> 注册Composer自动加载 --> 注册extends扩展目录

    4.注册错误和异常机制
    执行Error::register()注册错误和异常处理1机制.
    由三部分组成:
    -1.应用关闭方法:think\Error::appShutdown
    -2.错误处理方法:think\Error::appError
    -3.异常处理方法:think\Error::appException

    5.应用初始化
    严格意义上讲,前面的内容都可算做应用初始化部分:
    加载公共配置 --> 加载公共扩展配置 -->加载应用状态配置 --> 加载别名配置 -->
    --> 加载行为定义 --> 加载公共函数文件 -->注册应用命名空间 --> 加载扩展函数文件 --> 设置默认时区 --> 加载系统语言包

    6.URL访问检测
    URL必须是PATH_INFO格式才允许继续运行.
    1.PATH_INFO标准格式:
    http://域名/index.php/模块名/控制器名/操作名/参数键值对
    举例: http://tp5.com/index.php/index/user/add/id/10/name/peter
    2.PHTH_INFO兼容格式:
    http://域名/index.php?s=/模块名/控制器名/操作名&参数键值对
    举例: http://tp5.com/index.php?s=index/user/add&id=10&name=peter

    7.路由检测
    -1.如果开启了url_route_on参数,则首先进行URL路由检测;
    -2.一旦检测到匹配的路由,根据路由规则会注册到相应的URL调度;
    -3.TP5支持的路由规则如下:

    • 路由到模块/控制器/操作;(这是默认路由模式,如果关闭路由或者路由检测无效则执行该模式)
    • 路由到外部重定向地址;
    • 路由到控制器方法;
    • 路由到闭包函数;
    • 路由到类的方法;

    8.分发请求
    -1.将用户请求分发到对应的路由地址,完成应用的业务逻辑并返回数据;
    -2.统一使用return返回数据,不要用echo直接输出;
    -3.如非必要,请不要使用exit或者die中断执行;
    -4.分发请求支持TP5的五种路由地址模式:
    路由到模块/控制器/操作; 路由到外部重定向地址; 路由到控制器方法; 路由到闭包函数; 路由到类方法;

    9.响应输出
    -1.控制器正常返回的数据通常是:字符串(String)或数组(Array)格式;
    -2.统一使用return返回数据,而不是直接输出,这样可以自动调用
    Response::send()方法将最终的返回数据输出到页面或者客户端,
    并自动转换成default_return_type参数配置的格式(XML,JSON等).
    return 'ThinkPHP教学教程';

    10.应用结束
    -1.响应输出完成后,应用生命周期基本结束,可以写日志报告啦;
    -2.日志包括二部分:用户调试输出和系统自动生成;
    -3.日志在应用结束后,自动写入.

    总结:介绍了TP5框架中,一个应用从发出url请求,到正确获取到响应数据的完整流程.这里只是快速浏览,



    作者:KMWY
    链接:https://www.jianshu.com/p/d10515ad8323
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    RANSAC算法——RANDOM SAMPLE CONSENSUS
    屏蔽关键词搜索
    全景图拼接——opencv之stitching
    如何 查看本地安装的 .NET Framework(CLR) 版本 方法二亲测可行
    js判断是否是ie浏览器且给出ie版本
    js判断文件大小利用img 的 dynsrc,兼容IE10 及以上
    Java的——String类、StringBuffer和StringBuilder、不可变和可变字符序列使用陷阱
    windows.onload和body的onload属性的区别
    jquery中class选择器的用法,选择两个class
    #JS# 如何判断一个字符串是否为日期格式
  • 原文地址:https://www.cnblogs.com/yangyuhu/p/10997649.html
Copyright © 2020-2023  润新知