ci_code 发表于 2010-8-22 13:37:22

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

将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的问题,不过我理解的还是有点不太透彻。
      哪位朋友对这个理解的比较深的,麻烦告知一下。谢谢。

visvoy 发表于 2010-8-23 04:25:54

就是单件模式,controller把自身引用保存到静态变量CI_Base:: $instance(在其自身的构造函数完成这个动作),get_instance()获得这个静态变量就是controller的唯一对象
页: [1]
查看完整版本: &get_instance为什么能获取超级对象?