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

[已解决] 请问CI_Controller::get_instance()是返回CI_Controller的实例化对象么

[复制链接]
发表于 2011-4-21 17:39:07 | 显示全部楼层 |阅读模式
看到源代码里面定义有个get_instance()函数,返回的就是CI_Controller::get_instance(),可是我找不到任何实例化对象的代码(比如应该有个new xxx()),所以不知道这个函数到底返回了什么。
有人知道能解释一下么?谢谢
发表于 2011-4-21 18:12:18 | 显示全部楼层
呵呵,返回的就是CI的超级类了,也就是CI_Controller本身,也就是你在控制器中用的$this,CI中的类都是单例的,只会初始化一次的,CI_Controller类的初始化你可以在system/core/CodeIgniter.php中找到~~
 楼主| 发表于 2011-4-21 18:33:38 | 显示全部楼层
谢谢jeongee,可我实在不明白它是怎么初始化的,因为没有看到new CI_Controller()这样的句子,只看到
PHP复制代码
return self::$instance;
复制代码
,这个只是返回实例
主要还是不明白CI_Controller实例是怎么构造出来
发表于 2011-4-21 18:54:39 | 显示全部楼层
回复 3# jaka


   呵呵,那是个单例,你搜下PHP单例
 楼主| 发表于 2011-4-21 19:20:01 | 显示全部楼层
谢谢版主,我明白了,当子类控制器实例化的时候,基类CI_Controller会自动执行构造函数。
发表于 2011-8-9 10:41:00 | 显示全部楼层
学习了,不错,刚才就用到了

本版积分规则