CI4源码阅读笔记-CI框架核心类-CodeIgniter

文件位置

/system/CodeIgniter.php

这里列几个关键方法

初始化方法 __construct()

该方法的主要检查了php版本,记录框架开始时间及给config属性赋值.

初始化方法2 initialize()

该方法在引导文件被调用.
内部执行了以下操作

  1. 确定运行环境.正式?测试?开发?或者其他?
  2. 根据运行环境包含 /app/Config/Boot/xxx.php.此文件定义了各种错误或者debug的处理方式
  3. 实例化异常处理类
  4. 验证核心扩展是否缺失
  5. 设置区域 locale_set_default 及时区 date_default_timezone_set
  6. 初始化 kint,这是一个调试类.如果没开启debug.调试类设置为禁用状态.这个类很有意思.感兴趣的同学可以看下 传送门

实际执行方法 run()

前面准备了这么多.终于可以执行了.不出意外.此方法内部肯定实例化了控制器.然后调用了控制器的方法.什么方法是根据路由来的.
内部执行的操作

  1. 启用基准测试.定义框架开始执行的时间点
  2. 获取请求对象
  3. 获取响应对象
  4. 事件埋个点 pre_system. ci3的时候叫钩子
  5. 尝试从缓存获取请求的响应对象.如果有则直接返回
  6. 终于到了大名鼎鼎的 handleRequest 方法.顾名思义.就是把请求转成响应的方法.这个方法下面详细列一下.
  7. 处理错误.

handleRequest方法

该方法将请求转为响应.中间肯定经过了一系列的代码运行.
内部执行的操作

  1. 执行 请求过滤器before 方法, 这个东西类似其他框架的 请求中间件, 在控制器实际执行之前调用一下.
  2. 路由规则 + 请求信息 = 要执行的控制器和方法.
  3. 先给 post_controller_constructor 事件埋个点
  4. 然后执行控制器的方法.
  5. 控制器执行完了.控制器返回的响应对象也拿到了.现在要执行 请求过滤器after 方法了.
  6. 处理一下响应.到这里基本算打完收功了.
  7. 当然.再给 post_system 事件埋个点
  8. 返回响应. 到这里真正算打完收功了.
    多说一句.返回给框架以后.剩下的就是框架的事情了.该做的事情也差不多了.可能还需要处理一些扫尾工作.
posted @ 2022-01-27 10:25  乱世帝江  阅读(292)  评论(0)    收藏  举报