调用$CI和在代码点火器中使用“this”之间有什么区别吗?


Is there different between calling $CI and using `this` in codeigniter?

可能的重复项:
Codeigniter 中的 get_instance():为什么要将其分配给变量?

我有一个控制器,它有很多功能,我想将它们分成不同的cmd对象。但是在控制器中,我可以做$this魔法,例如,我可以这样称呼:

$this->form_validation->run('myAction');

但是当我将此代码移动到一个不是控制器的对象时,我像这样调用该函数:

    $CI =& get_instance();
    $CI->form_validation->run('myAction');

意识到他们可以跑,结果正是我想要的。但是,我的问题是,这两个操作或代码有什么不同吗?里面get_instance()黑魔法是什么?控制器的$this是否引用相同的get_instance()?谢谢。

使用

$ci = &get_instance() ,您直接使用 codeigniter 本机库,而不是制作它的副本。"$this"命令只能在控制器内部使用,因此将CI对象分配给变量是进入控制器外部Ci核心库的唯一方法。注意模型内的"$this"命令是指模型对象本身。