用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2497|回复: 2
收起左侧

CodeIgniter 2是如何工作的

[复制链接]
发表于 2012-8-10 13:13:42 | 显示全部楼层 |阅读模式

现在“市面上的”PHP开发框架层出不穷,但是我们选择框架需要慎重,尤其是新人,在还没有深入了解PHP之前,我们不太建议去接触过多的框架,这样反而让你对程序设计和构建迷失了自己的方向。另外选择框架需要考虑多方面的因素,除了设计合理之外,文档、社区、扩展应用也是考虑的几个方面,今天我们带着大家来对一款主流的PHP框架进行分析,了解他整个的工作过程。


index.php

* 检查system和application文件夹是否存在;

* 执行system/core/CodeIgniter.php


system/core/CodeIgniter.php

* Common.php(基础函数和库)

* Hooks.php (载入钩子)

* 执行钩子:pre_system

* Config.php (载入 application/config/config.php, 初始化 base_url)

* Utf8.php

* URI.php

* Router.php

* $RTR->_set_routing(): 载入application/config/routes.php将地址匹配到一个路由中,设定class和method(后面将会被用到)

* Output.php

* 钩子:cache_override

* 如果没有设置缓存并且钩子设置的缓存不存在,显示缓存然后在这里退出;

* Security.php

* Input.php

* Lang.php

* Controller.php

*Loader.php

*载入autoload初始化的项目(libraries, helpers..)

*定义get_instance()

* application/core/MY_Controller.php(如果存在则载入)

* 载入控制器class(如果不存在则显示404错误)

* 钩子:pre_controller

* 创建控制器实例

* 钩子:post_controller_constructor

* 如果定义了_remap()调用控制器这个方法

* 如果_remap没有定义,查看method,如果不存在显示404错误;

* 调用method(保函参数)

* 钩子:post_controller

* 钩子:display_override

* 如果钩子没有设置,生成内容输出,如果需要创建缓存,发送HTTP请求(headers+body)

* 钩子:post_system

* 关闭任何的数据库连接

原文地址:http://www.cit.cn/tech/develop/codeIgniter/2012/0810/432.html

发表于 2012-8-11 16:53:30 | 显示全部楼层
学习了.
发表于 2012-8-11 16:56:05 | 显示全部楼层
学习了

本版积分规则