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

[HELP] 在CI第三方类中的一个问题

[复制链接]
发表于 2012-4-4 21:36:34 | 显示全部楼层 |阅读模式
在CI第三方类中或者helper 中,要使用CI 的配置 或者加载一些CI的东西,如配置与语言包

是不是一定要 $this->ci =& get_instance(); 来引入,

这样做耗资源吗?一定要这样做吗?还有其他办法吗  ,直接$this->load->model 为什么不行?
发表于 2012-4-5 04:43:38 | 显示全部楼层
本帖最后由 actionbi 于 2012-4-5 05:23 编辑

1、调用get_instance()这么做几乎不消耗资源,因为每次返回的都是一个引用

     CI的CI_Controller类用的是单例模式。不管你怎么调用 & get_instance(),系统只有一个实例,不会重复实例化。

2、你的第三方类库或者helper,本来就是通过Controller使用的。
      helper中调用ci的的信息,要用get_instance();
      因为Controller在实例化时候已经加载了所有核心类库。你想获取啥都能获取到。

3、第三方的类库就没必要了。CI的core文件夹下面的所有核心文件之间也存在相互调用,使用的是 &load_class 例如:
PHP复制代码
 
function __construct()
        {
                $this->config =& load_class('Config', 'core');
                $this->uri =& load_class('URI', 'core');
                log_message('debug', "Router Class Initialized");
        }
 
复制代码


4、$this->load->model() ????这个是真的不知道你想表达啥意思。

5、建议你看看源码,看了之后你就知道CI是怎么工作的了。对加深学习很有帮助。



PS:本人还没有开发过第三方的类库和helper,所以只是主观猜测,求指正。









评分

参与人数 1威望 +1 收起 理由
kissgxd + 1 很给力!虽然不知道谁的都对不,但是很受益.

查看全部评分

本版积分规则