CI4源码阅读笔记-CI框架核心类-CodeIgniter
文件位置
/system/CodeIgniter.php
这里列几个关键方法
初始化方法 __construct()
该方法的主要检查了php版本,记录框架开始时间及给config属性赋值.
初始化方法2 initialize()
该方法在引导文件被调用.
内部执行了以下操作
- 确定运行环境.正式?测试?开发?或者其他?
- 根据运行环境包含 /app/Config/Boot/xxx.php.此文件定义了各种错误或者debug的处理方式
- 实例化异常处理类
- 验证核心扩展是否缺失
- 设置区域
locale_set_default及时区date_default_timezone_set - 初始化
kint,这是一个调试类.如果没开启debug.调试类设置为禁用状态.这个类很有意思.感兴趣的同学可以看下 传送门
实际执行方法 run()
前面准备了这么多.终于可以执行了.不出意外.此方法内部肯定实例化了控制器.然后调用了控制器的方法.什么方法是根据路由来的.
内部执行的操作
- 启用基准测试.定义框架开始执行的时间点
- 获取请求对象
- 获取响应对象
- 事件埋个点
pre_system. ci3的时候叫钩子 - 尝试从缓存获取请求的响应对象.如果有则直接返回
- 终于到了大名鼎鼎的
handleRequest方法.顾名思义.就是把请求转成响应的方法.这个方法下面详细列一下. - 处理错误.
handleRequest方法
该方法将请求转为响应.中间肯定经过了一系列的代码运行.
内部执行的操作
- 执行
请求过滤器的before方法, 这个东西类似其他框架的请求中间件, 在控制器实际执行之前调用一下. - 路由规则 + 请求信息 = 要执行的控制器和方法.
- 先给
post_controller_constructor事件埋个点 - 然后执行控制器的方法.
- 控制器执行完了.控制器返回的响应对象也拿到了.现在要执行
请求过滤器的after方法了. - 处理一下响应.到这里基本算打完收功了.
- 当然.再给
post_system事件埋个点 - 返回响应. 到这里真正算打完收功了.
多说一句.返回给框架以后.剩下的就是框架的事情了.该做的事情也差不多了.可能还需要处理一些扫尾工作.

浙公网安备 33010602011771号