1. 流程图
      1. image.png
    2. 入口文件->public/index.php
      1. 定义项目路径
      2. 加载框架引导文件
    3. 引导文件->start.php,该文件就是系统默认的一个引导文件
      1. 加载系统常量定义
      2. 加载环境变量定义文件
      3. 注册自动加载机制
      4. 注册错误和异常处理机制
      5. 加载惯例配置文件
      6. 执行应用
    4. 注册自动加载->系统会调用Loader::register()方法注册自动加载,所有符合规范的类库(包括composer依赖加载的第三方类库)都将自动加载
      1. 系统的自动加载主要为
        1. 注册系统的自动加载方法 \think\Loader::autoload
        2. 注册系统命名空间定义
        3. 加载类库映射文件(如果文件存在)
        4. 如果存在Composer安装,则注册Composer自动加载
        5. 注册extend扩展目录
      2. 一个类库的自动加载检测顺序为
        1. 是否定义类库映射<最高效>
        2. RSR-4自动加载检测
        3. PSR-0自动加载检测
    5. 注册错误和异常机制->执行Error::register()注册错误和异常处理机制

      1. 应用关闭方法 think\Error::appShutdown
      2. 错误处理方法 think\Error::appError
      3. 异常处理方法 think\Error::appException
        1. // 在整个应用请求的生命周期过程中,如果抛出了异常或者严重错误,均会导致应用提前结束,并相应输出异常
        2. 和错误信息
        3. set_error_handler([__CLASS__, 'appError']);
        4. set_exception_handler([__CLASS__, 'appException']);
        5. register_shutdown_function([__CLASS__, 'appShutdown']);
    6. 应用初始化

      1. 加载应用(公共)配置
      2. 加载扩展配置文件(由extra_config_list定义)
      3. 加载应用状态配置
      4. 加载别名定义
      5. 加载行为定义
      6. 加载公共(函数)文件
      7. 注册应用命名空间
      8. 加载扩展函数文件(由extra_file_list定义)
      9. 设置默认时区
      10. 加载系统语言包
    7. url访问检测->应用初始化完成后,就会进行url的访问检测,包括PATH_INFO检测和URL后缀检测,5.0url访问必须是PATH_INFO方式的url地址。如:http://serverName/index.php/index/index/hello/val/value
    8. 路由检测->如果开启了url_route_on参数,会首先进行url的路由检测,5.0路由地址支持方式
      1. 路由到模块/控制器/操作
      2. 路由到外部重定向地址
      3. 路由到控制器方法
      4. 路由到闭包函数
      5. 路由到类的方法
    9. 分发请求->在完成url检测和路由检测之后,路由器会分发请求到对应的路由地址。系统支持的分发请求机制为:
      1. 模块/控制器/操作
      2. 控制器方法
      3. 外部重定向
      4. 闭包函数
      5. 类的方法
    10. 相应输出->控制器的所有操作方法都是return返回而不是输出的,系统会调用Respone::send方法将最终的应用返回的数据输出到页面或者客户端。
    11. 应用结束->事实上,在应用的数据响应输出之后,应用并没有真正的结束,系统会在应用输出或者中断后进行日志保存写入操作。