zoukankan      html  css  js  c++  java
  • thinkphp5.0 生命周期

    1、入口文件

    // 应用入口文件
    index.php
    // 定义项目路径
    define('APP_PATH', __DIR__ . '/../application/');
    // 加载框架引导文件
    require __DIR__ . '/../thinkphp/start.php';

    2、引导文件

    接下来就是执行框架的引导文件,start.php文件就是系统默认的一个引导文件。在引导文件中,会依次执行下面操作:

    3、注册自动加载

    系统会调用Loader::register()方法注册自动加载,在这一步完成后,所有符合规范的类库(包括Composer依赖加载的第三方类库)都将自动加载。

    4、注册错误和异常机制

    执行Error::register()注册错误和异常处理机制。

    在整个应用请求的生命周期过程中,如果抛出了异常或者严重错误,均会导致应用提前结束,并响应输出异常和错误信息。

    5、应用初始化

    执行应用的第一步操作就是对应用进行初始化,包括:

    • 加载应用(公共)配置;
    • 加载扩展配置文件(由extra_config_list定义);
    • 加载应用状态配置;
    • 加载别名定义;
    • 加载行为定义;
    • 加载公共(函数)文件;
    • 注册应用命名空间;
    • 加载扩展函数文件(由extra_file_list定义);
    • 设置默认时区;
    • 加载系统语言包;

    6、URL访问检测

    应用初始化完成后,就会进行URL的访问检测,包括PATH_INFO检测和URL后缀检测。

    所以,如果你的环境只能支持普通方式的URL参数访问,那么必须使用

    http://serverName/index.php?s=/index/index/hello&val=value

    7、路由检测

    • 路由到模块/控制器/操作;
    • 路由到外部重定向地址;
    • 路由到控制器方法;
    • 路由到闭包函数;
    • 路由到类的方法;

    路由地址可能会受域名绑定的影响。

    8、分发请求

    在完成了URL检测和路由检测之后,路由器会分发请求到对应的路由地址,这也是应用请求的生命周期中最重要的一个环节。

    在这一步骤中,完成应用的业务逻辑及数据返回。

    建议统一使用return返回数据,而不是echo输出,如非必要,请不要使用exit或者die中断执行。

    直接echo输出的数据将无法进行自动转换响应输出的便利。

    类的方法

    除了以上方式外,还支持分发请求到类的方法,包括:
    静态方法: 'blog/:id'=>'orgutilBlog::read' 
    类的方法:'blog/:id'=>'appindexcontrollerBlog@read'

    9、响应输出

    控制器的所有操作方法都是return返回而不是直接输出,系统会调用Response::send方法将最终的应用返回的数据输出到页面或者客户端,并自动转换成default_return_type参数配置的格式。所以,应用执行的数据输出只需要返回一个正常的PHP数据即可。

    
    

    10、应用结束

    事实上,在应用的数据响应输出之后,应用并没真正的结束,系统会在应用输出或者中断后进行日志保存写入操作。

    系统的日志包括用户调试输出的和系统自动生成的日志,统一会在应用结束的时候进行写入操作。

    而日志的写入操作受日志初始化的影响。



  • 相关阅读:
    Digital Video Stabilization and Rolling Shutter Correction using Gyroscope 论文笔记
    Distortion-Free Wide-Angle Portraits on Camera Phones 论文笔记
    Panorama Stitching on Mobile
    Natural Image Stitching with the Global Similarity Prior 论文笔记 (三)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(二)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(一)
    ADCensus Stereo Matching 笔记
    Efficient Large-Scale Stereo Matching论文解析
    Setting up caffe on Ubuntu
    Kubernetes配置Secret访问Harbor私有镜像仓库
  • 原文地址:https://www.cnblogs.com/chuanqideya/p/5925772.html
Copyright © 2011-2022 走看看