- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
codeIgniter框架基本结构分析【中级教程】
codeIgniter框架基本结构分析【中级教程】【求精】1、index.php入口文件:1)?? 指定 CodeIgniter 框架所在目录;2)?? 定义 APPPATH 常量,指示应用程序文件根目录;3)?? 载入 codeigniter/CodeIgniter.php 文件,启动框架。2、codeigniter/CodeIgniter.php 文件:主要完成初始化 CodeIgniter 框架和启动应用程序两项工作。1)?? 实例化 CI_Benchmark,这个类用于标记应用程序执行消耗的时间;2)?? 载入应用程序的配置文件 require(APPPATH.config/config.EXT);3)?? 实例化 CI_Config,这个类用于将数组封装为可以操作的配置服务;4)?? 实例化 CI_Router,这个类用于分析 URL 请求,确定要执行的控制器和动作;5)?? 实例化 CI_Output,这个类提供输出内容的缓存和检查服务;6)?? 通过 $OUT-_display_cache($CFG, $RTR) 尝试输出缓存内容,如果成功,则结束程序运行;7)?? 判断控制器类定义文件是否存在。如果不存在则通过 show_404() 显示错误信息;8)?? 实例化 CI_Input,这个类提供对 $_GET、$_POST 的访问手段,并封装了一些过滤方法;9)?? 实例化 CI_URI,这个类提供对 URL 的分析、构造服务;10)?? 实例化 CI_Language,这个类提供多语言字符串映射服务;11)?? 载入 codeigniter/Base4.php 或者 codeigniter/Base5.php;12)?? 载入 libraries/Controller.php;13)?? 载入控制器类定义文件;14)?? 实例化控制器类;15)?? 如果控制器使用了 scaffolding 功能,则调用控制器的 _ci_scaffolding() 方法,否则调用控制器动作方法;16)?? 通过 $OUT-_display(); 输出内容($OUT 是 CI_Output 的实例)。详细:CI_Benchmark这个类很简单,就是用 microtime() 函数记录时间点,并提供 elapsed_time() 方法来计算两个时间点之间消耗的时间。这个类功能不多,但是很实用。CodeIgniter 中大部分类都是这种设计思想,值得称赞!CI_Config这个类其实是在内部维护了一个数组,用来记录应用程序的设置(类似 Windows 注册表)。这种简单的封装可以强制应用程序按照固定的规范访问设置,同时又不将设置保存为全局变量,避免无意中遭到破坏或篡改。CI_RouterCI_Router 功能很单一。CI_Router 首先分析出应用程序当前使用的 URL 模式:PATHINFO 或普通模式。接下来从 URL 地址中分析出控制器名字、动作名以及参数名和参数值。分析的结果保存为 CI_Router 对象实例的成员变量。这里比较有特点的是,CI_Router 可以根据开发者在应用程序设置里面定义的模式来分析 URL,而不是使用某种固定的模式。CI_Output 有两个主要功能:获得应用程序执行的所有输出内容和输出缓存服务。应 用程序执行的输出结果都会保存为 CI_Output 的成员变量。然后根据应用程序设置,CI_Output::_display() 方法会调用 CI_Output::_write_cache() 方法将输出内容缓存起来。下一次当使用 CI_Output::_display_cache() 时如果缓存已经建立了,并且没有过期,则会直接输出缓存内容。在 CI_Output::_write_cache() 中,是根据 URL 地址和 URL 参数来确定缓存 ID 的。因此即便是同一个控制器和动作,只要使用不同的 URL 参数,也会缓存不同的内容。这 个类的功能很简单,因此在许多动态页面是无法使用的。例如用户登录前和登录后,访问同一个控制器和动作并使用相同的 URL 参数,页面内容也有可能是不同的。这时,CI_Output 的缓存就不能使用。因为从本质上来说,CI_Output 提供的缓存是在应用程序之外的,所以应用程序无法根据当前状态来决定是否缓存页面。当一个页面被缓存后,对该页面的访问实际上根本就不会执行应用程序代 码,而是由 CI_Output 取出缓存内容直接就输出了。CI_InputCI_Input 是类似过滤器,并且提供了对 $_GET、$_POST 的封装服务。例如用 CI_Input::post() 方法来访问 $_POST。由于多了这层封装,CI_Input 可以在 post() 方法中对数
文档评论(0)