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

[Others] &get_instance为什么能获取超级对象?

[复制链接]
发表于 2010-8-22 13:37:22 | 显示全部楼层 |阅读模式
将ci的源码大致过了一遍,在论坛和网上也找了相关源码分析的文章,对于它的内部实现流程基本清楚了。
     有个问题一直没有像透彻。
     Base5.php
     它有个Ci_base基类
     中有个function get_instance(){ Ci::base::get_instance}
   
      而Controller类是继承这个Ci_base的。

      现在是的问题是$ci = & get_instance()就能获取一个全局的超级对象,就能$ci->config  $ci->uri 等等之前加载过的类。
      我的疑问:为什么它get_instance()能获取全局对象的实例?
      我看过《php敏捷开发框架》中第七章的Codeigniter和对象,其中讲到了这个&get_instance的问题,不过我理解的还是有点不太透彻。
      哪位朋友对这个理解的比较深的,麻烦告知一下。谢谢。
发表于 2010-8-23 04:25:54 | 显示全部楼层
就是单件模式,controller把自身引用保存到静态变量CI_Base:: $instance(在其自身的构造函数完成这个动作),get_instance()获得这个静态变量就是controller的唯一对象

本版积分规则