zionwang 发表于 2012-4-4 21:36:34

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

在CI第三方类中或者helper 中,要使用CI 的配置 或者加载一些CI的东西,如配置与语言包

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

这样做耗资源吗?一定要这样做吗?还有其他办法吗,直接$this->load->model 为什么不行?

actionbi 发表于 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 例如:

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]
查看完整版本: 在CI第三方类中的一个问题