CI框架源码解析2核心引导文件CodeIgniter.php

CodeIgniter.php是引导文件,整个框架的核心,其实把这个文件运行一遍,整个CI应用就完成了一次完整的运行流程。加载组件,引入很多外部文件。CodeIgniter.php文件主要完成如下几个工作

1、加载框架常量、函数库以及框架初始化

2、加载核心类组件

3、路由的设置与判断

4、解析请求的类并调用请求的方法

5、输出

1、加载框架常量、函数库以及框架初始化

(1)、执行前工作 判断常量

扫描二维码关注公众号,回复: 5065965 查看本文章

(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、输出

猜你喜欢

转载自blog.csdn.net/u011028179/article/details/86508887