CodeIgniter.php是CodeIgniter框架的核心,读懂这个文件,就算读懂CI了。

index.php接受用户请求后,就直接交给这个文件来处理。它首先初始化了一些系统运行必须的类库,如Benchmark、Hooks、Config、URI、Router、Output等等。

之后,108行到114行代码,用来显示静态文件,如果网站中有使用cache,这里就会直接到cache目录下读静态文件并返回。这可以称做是CI支持全站静态吧,关于其详细实现 ,以后再进行分析。

122-123载入两个类Input和Language

148行载入控制器类,打开system/library/Controller.php,发现这个类继承自CI_Base,而CI_Base唯一的作用就是返回自己的实例,我们在实际使用时,是使用get_instance方法来调用 CI_Base类的get_instance方法取得CI_Base类的实例 ,因为controller是继承自CI_Base,所以,使用get_instance其实是返回了一个当前访问的controller的实例,相当于我们自己实际的控制器里的$this变量了。

153-161行中,路由类实例$RTR会根据当前的URL分析处理请求所需要的控制器及方法,然后引入。如果找不到就报错。

后面的代码也很简单

$class  = $RTR->fetch_class();

$method = $RTR->fetch_method();

这两句话找到了处理请求的类和方法,

$CI = new $class();

这句话,实例化这个类

最后,这句话:

call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 2));

这个函数算是KEY POINT了!它把请求交给控制器和方法来处理,也是我们需要实现的部分。

调用这个方法,并把URL后面的参数传进去。

最后几句,关数据库连接。整个执行流程就是这么回事,中间穿插着一些_call_hook函数,这是CI为了实现插件机制,这跟WORDPRESS的插件原理一样,_call_hook函数的参数可以叫做是挂载点,比如pre_system是系统刚开始执行时的挂载点。_call_hook函数会在配置文件里找到挂载在pre_system下的函数,分别执行。

codeigniter.php,CodeIgniter.php在做什么相关推荐

  1. php ci框架开发手册下载,php敏捷开发codeigniter框架-CodeIgniter教程(中文手册)pdf格式免费完整版-东坡下载...

    这既是一份CodeIgniter教程,也是一份不可多得的CodeIgniter中文手册,更具体一点来说,它其实是<php敏捷开发codeigniter框架>,如果你需要一份这样的codei ...

  2. php codeigniter安全,CodeIgniter安全相关设置汇总

    CodeIgniter框架自身提供了一些安全设置如针对XSS和CSRF攻击的防范,针对SQL注入攻击的防范等. 就配置文件而言: 在application/config/config.php中 $co ...

  3. 使用 CodeIgniter 框架快速开发 PHP 应用(一)

    使用 CodeIgniter 框架快速开发 PHP 应用(一) 原文:使用 CodeIgniter 框架快速开发 PHP 应用(一) 对 CodeIgniter 的介绍 大多数PHPer都想写出运行状 ...

  4. CodeIgniter 框架

    1.什么是框架:    框架就是一套提供基本功能组件,并做了安全控制,使程序员的工作重点放在业务逻辑上面,框架规范了编程规则,程序员可以基于这套规则进行功能组件扩展.减少代码的编写量 2.什么是Cod ...

  5. CodeIgniter 框架分析

    2019独角兽企业重金招聘Python工程师标准>>> 入口文件 入口文件主要完成下列工作: 1)   指定 CodeIgniter 框架所在目录: 2)   定义 APPPATH ...

  6. codeigniter php 版本,PHP框架CodeIgniter 2.0.0版本发布

    [IT168 资讯]2月10日消息,近日,PHP框架CodeIgniter 2.0.0版本发布.CodeIgniter是一个小巧但功能强大的 PHP 框架,作为一个简单而"优雅"的 ...

  7. 《微信公众平台与小程序开发——从零搭建整套系统》第5章 基于CodeIgniter的微信公众平台开发框架

    第5章 基于CodeIgniter的微信公众平台开发框架 本章将介绍一个PHP框架-CodeIgniter,并在此框架基础上做简单的改造以适应后续的扩展,并新增了微信公众号开发相关的SDK. 5.1 ...

  8. 使用codeigniter_使用CodeIgniter探索面向方面的编程,第2部分

    使用codeigniter In the previous part of this series we learned what Aspect Oriented Programming (AOP) ...

  9. mvc路由原理 php_PHP实战002:CodeIgniter安装和入门使用

    CodeIgniter简介 CodeIgniter 是一个基于MVC框架的PHP轻量级框架(开源),它的目标是让你能够更快速的开发,它提供了日常任务中所需的大量类库,以及简单的接口和逻辑结构.通过减少 ...

  10. php ci框架下载,CodeIgniter框架的下载及安装,codeigniter框架_PHP教程

    CodeIgniter框架的下载及安装,codeigniter框架 CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包.初次学习Php,网上搜了很多php框架,最后选择 ...

最新文章

  1. compass reset和layout [Sass和compass学习笔记]
  2. JVM工作原理和特点
  3. SAP UI5 应用启动(bootstrap)过程单步调试
  4. WordPress 多媒体库添加分类和标签支持
  5. 橡皮擦的英语_从填字涂鸦到英语启蒙,家长口中的儿童版“秘密花园”涂色游戏测评【玩具测评】...
  6. PAT乙级(1031 查验身份证)
  7. HDU2091 空心三角形【打印图案】
  8. 2010年年终“飞”的总结
  9. set列表对象去重_set去重应用
  10. 【微信小程序】微信Web开发者工具下载及安装
  11. java quartz 每月1号执行_Quartz 每月1号 执行规则表达式
  12. html返回到处乱跑,电脑鼠标乱动不受控制(鼠标到处乱跑不听使唤)
  13. pycharm安装redis
  14. 游戏逆向 修改植物大战僵尸阳光值
  15. 查询Microsoft Visual C++ Debug Library窗体并自动点击忽略按钮的小工具代码
  16. 护眼台灯哪种光源好?光源最舒适的护眼台灯推荐
  17. 计算机第二道密码怎么取消,电脑设置两道密码的具体方法
  18. 公安联勤指挥调度实战应用系统软件平台解决方案
  19. 继续中文,晒代码,真的没什么新意,好在得意自满!
  20. 【七夕表白网站】程序员表白网页合集(100套) HTML+CSS+JS

热门文章

  1. ros打开笔记本电脑的摄像头
  2. ios8以后Label自适应大小
  3. Excel怎么随机生成偶数
  4. 【转】Python Enhancement Proposal #8【PEP8】
  5. 矢量绘图软件源码定制开发,类似visio绘图,大量复合图元模板,可编程动态控制图元
  6. matlab凑数求和,凑数求和算法 C语言问题 C语言求和算法
  7. 适合 C++ 新手学习的开源项目——在 GitHub 学编程
  8. Pycharm 用鼠标滚轮控制字体大小
  9. 创客使用Fusion 360 - 制作模型
  10. CF卡 本地磁盘模式转换