zoukankan      html  css  js  c++  java
  • 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
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    Java实现 LeetCode 382 链表随机节点
    Java实现 LeetCode 382 链表随机节点
    Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素
    Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素
    Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素
    Java实现 LeetCode 380 常数时间插入、删除和获取随机元素
    Java实现 LeetCode 380 常数时间插入、删除和获取随机元素
    Linux下的iwpriv(iwlist、iwconfig)的简单应用
    OCX控件的注册卸载,以及判断是否注册
    .OCX、.dll文件注册命令Regsvr32的使用
  • 原文地址:https://www.cnblogs.com/yangyuhu/p/10997649.html
Copyright © 2011-2022 走看看