CI框架代码运行最详细的流程

最近在学习CI(3.1.0-dev)框架源码,一边看源码,一边在github上面写中文注释,https://github.com/pandancode/CI-note,有兴趣的同窗能够看看。php

index.php流程:
一、定义开发模式,调试,开发,发布
二、设置system,application等目录
三、设置默认控制器(不建议在index.php设置)
四、设置用户配置
五、检查路径
六、定义路径常量
七、加载引导程序  system/core/codeigniter.php
 
condeigniter.php流程:
一、定义框架版本
二、加载框架定义的常数 system/config/contants.php
三、加载所有函数 system/core/Common.php
四、检查PHP版本小于5.4,作兼容性处理
五、将PHP超级变量存放在$GLOBALS数组中
六、设置错误,异常,脚本退出触发的函数
七、设置子类前缀
八、若有须要自动加载组件,则加载APPPATH/vendor/autoload.php,或者配置文件里设置的文件路径
九、加载benchmark,并记录total_execution_time_start,_base_classes_start两个时间点
十、加载Hooks,并调用pre_system钩子
十一、加载config类,并初始化实例,根据首页设置配置,替换配置文件其中项
十二、设置默认字符,并加载msstring、iconv扩展
1三、检查mbstring,hash,password,standard类函数是否存在(可能因为版本问题,有些函数在低版本中没定义),则从新定义实现该函数
1四、实例化utf八、uri、router、output类
1五、缓存检查,若是没有重写cache输出,且知足缓存条件,则直接输出缓存,退出脚本
1六、初始化Security、Input、Lang类
1七、加载BASEPATH/core/Controller.php控制器(迟点铺开讲)
1八、若是存在子控制器,则加载进来
1九、设置_base_classes_end时间点
20、检查路由接触出来的class和method是否有效,若是无效,则激活404状态变量
2一、检查是否重置404,若是重置404,则检查重置404类和方法是否有效,若是无效,则取消404,
2二、若是404为false,第一种状况是自己404一直是未激活,则使用路由解析出来的类和方法,第二种重置了404,可是类或者方法无效,则使用默认的类和方法,否者使用新的类和方法处理404
2三、若是方法不是_remap,则获取参数,Hooks调用pre_controller钩子
2四、记录controller_execution_time_class_method开始时间,并初始化class
2五、Hooks调用post_controller_constructor 钩子
2六、调用class中method,这里会调用相应的controller和方法,方法里面在调用model来处理业务逻辑(迟点铺开讲)
2七、BM记录controller_execution_time_class_method执行结束时间点
2八、Hooks调用post_controller钩子
2九、输出视图
30、Hooks调用post_system钩子
妈蛋,流程终于结束了。
相关文章
相关标签/搜索