Php 在codeigniter中调用$CI和使用'this'有什么不同吗?
可能重复:Php 在codeigniter中调用$CI和使用'this'有什么不同吗?,php,codeigniter,frameworks,Php,Codeigniter,Frameworks,可能重复: 我有一个控制器,它有很多函数,我想把它们分成不同的cmd对象。但在控制器中,我可以执行$this魔术,例如,我可以调用如下内容: $this->form_validation->run('myAction') 但是当我把这个代码移到一个对象上,它不是控制器,所以我调用了如下函数: $CI =& get_instance(); $CI->form_validation->run('myAction'); 我意识到它们可以运行,结果正是我想要的。但
我有一个控制器,它有很多函数,我想把它们分成不同的cmd对象。但在控制器中,我可以执行
$this
魔术,例如,我可以调用如下内容:
$this->form_validation->run('myAction')代码>
但是当我把这个代码移到一个对象上,它不是控制器,所以我调用了如下函数:
$CI =& get_instance();
$CI->form_validation->run('myAction');
我意识到它们可以运行,结果正是我想要的。但是,我的问题是,这两种操作或代码有什么不同吗?里面的get\u instance()
黑魔法是什么?控制器的$this
是否引用了相同的get_instance()
?谢谢 使用$ci=&get_instance()
,您直接使用的是codeigniter本机库,而不是它的副本。“$this
”命令只能在控制器内部使用,因此将CI对象分配给变量是进入控制器外部的CI核心库的唯一方法。请注意,模型中的“$this
”命令引用模型对象本身。使用$ci=&get\u instance()
,您直接使用的是codeigniter本机库,而不是它的副本。“$this
”命令只能在控制器内部使用,因此将CI对象分配给变量是进入控制器外部的CI核心库的唯一方法。请注意,模型中的“$this
”命令指的是模型对象本身。根据这里给出的答案,我敢说它们是相同的[1]:从名称本身获取已初始化的类的实例$这是指扩展核心控制器CI_controller时加载的方法基于这里给出的答案,我敢说它们是相同的[1]:从名称本身获取已初始化类的实例$这是指扩展核心控制器CI_控制器时加载的方法