在CI第三方类中的一个问题
在CI第三方类中或者helper 中,要使用CI 的配置 或者加载一些CI的东西,如配置与语言包是不是一定要 $this->ci =& get_instance(); 来引入,
这样做耗资源吗?一定要这样做吗?还有其他办法吗,直接$this->load->model 为什么不行? 本帖最后由 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]