CodeIgniter.php是引导文件,整个框架的核心,其实把这个文件运行一遍,整个CI应用就完成了一次完整的运行流程。加载组件,引入很多外部文件。CodeIgniter.php文件主要完成如下几个工作
1、加载框架常量、函数库以及框架初始化
2、加载核心类组件
3、路由的设置与判断
4、解析请求的类并调用请求的方法
5、输出
1、加载框架常量、函数库以及框架初始化
(1)、执行前工作 判断常量
(2)、加载框架常量
(3)、加载全局函数库
(4)、自定义错误 异常和程序完成的函数
(5)、检测核心class是否被扩展
(6)、加载composer
2、加载核心类组件
通常,CI框架中不同的功能均由不同的组件来完成(如Log组件主要用于记录日志,Input组件则用于处理用户的GET,POST等数据)这种模块化的方式使得各组件之间的耦合性较低,从而也便于扩展。CI中主要的核心组件如下所示:
a) BM:指BenchMark,是CI的基准点组件,主要用于mark各种时间点、记录内存使用等参数,便于性能测试和追踪。
b) 钩子类->EXT:CI的扩展组件,用于在不改变CI核心的基础上改变或者增加系统的核心运行功能。Hook钩子允许你在系统运行的各个挂钩点(hook point)添加自定义的功能和跟踪,如pre_system,pre_controller,post_controller等预定义的挂钩点。以下所有的$EXT->_call_hook("xxx");均是call特定挂钩点的程序(如果有的话)。
c) 配置类->CFG:Config配置管理组件。主要用于加载配置文件、获取和设置配置项等。
d) utf8类->UNI:用于对UTF-8字符集处理的相关支持。其他组件如INPUT组件,需要改组件的支持。
e) URL类->URI:解析URI)参数等.这个组件与RTR组件关系紧密
f) 路由类->RTR:路由组件。通过URI组件的参数解析,决定数据流向(路由)。
g) OUTPUT类->OUT:最终的输出管理组件,掌管着CI的最终输出(海关啊)。
h) 安全类->SEC:安全处理组件。毕竟安全问题永远是一个大问题。
i) 输入及过滤类->IN:用于获取输入以及表单验证。
j) 语言类->LANG:用于设置框架语言。
3、路由的设置与判断
4、解析请求的类并调用请求的方法
call_user_func_array 调用回调函数,并把一个数组参数作为回调函数的参数,call_user_func_array 函数和 call_user_func 很相似
只是使用了数组的传递参数形式,让参数的结构更清晰。
5、输出