终于把codeigniter的源码按照程序执行的顺利看了一遍,虽然还有很多liarbries 和helpers 没看,
但捋清了程序执行的大致脉络,记下来 怕自己忘了,
首先,程序默认访问 index.php index.php定义三种环境 开发、测试、上线、
在index.php尾部 require_once BASEPATH.'core/CodeIgniter.php';
几乎所有的程序 在这里完成的,
所以 在开始便开始加载并实例化很多类
如下 Benchmark(基准类,一般用计算程序执行时间)、Hooks(钩子)、Config(配置文件,不可或缺)、
Utf8(关于utf8编码的方法)、URI(解析uri)、Router(路由类,必需的)、Output(输出类)、
Security(安全类)、Input(输入类,处理GPC)、Lang(语言类、没有用)、
require BASEPATH.'core/Controller.php'; 控制器类,这才到程序真正执行
其构造函数 默认加载Loder.php (加载类,很重要)
然后,加载applaication 下的控制器、获取当前类和方法(默认index)
call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 2));
回调要执行的方法 并传参
这个方法最后要有一个view方法将数据传给指定的视图
而view 方法引入视图文件、然后将缓存数据赋值给final_output
左后$OUT ->_display() 将final_output 发送到浏览器
最后关闭数据库连接。