在 codeigniter 中调用 $CI 和使用 `this` 有啥不同吗? [复制]
Posted
技术标签:
【中文标题】在 codeigniter 中调用 $CI 和使用 `this` 有啥不同吗? [复制]【英文标题】:Is there different between calling $CI and using `this` in codeigniter? [duplicate]在 codeigniter 中调用 $CI 和使用 `this` 有什么不同吗? [复制] 【发布时间】:2013-01-09 04:37:34 【问题描述】:可能重复:get_instance() in Codeigniter: Why assign it to a variable?
我有一个控制器,它有很多功能,我想将它们分成不同的 cmd 对象。但是在控制器中,我可以使用$this
魔术,例如,我可以这样调用:
$this->form_validation->run('myAction');
但是当我将此代码移动到一个不是控制器的对象时,我这样调用函数:
$CI =& get_instance();
$CI->form_validation->run('myAction');
我意识到他们可以运行,结果正是我想要的。但是,我的问题是,这两个操作或代码有什么不同吗?里面的get_instance()
黑魔法是什么?控制器的$this
指的是同一个get_instance()
吗?谢谢。
【问题讨论】:
根据这里给出的答案,我敢说它们是相同的[1]:***.com/questions/2819435/codeigniter-get-instance 从名称本身 get_instance() 一个已初始化的类的实例。 $this 指的是扩展核心控制器 CI_Controller 时加载的方法 【参考方案1】:使用$ci = &get_instance()
,您是在直接使用codeigniter 本机库,而不是对其进行复制。 “$this
”命令只能在控制器内部使用,因此将 CI 对象分配给变量是进入控制器外部 Ci 核心库的唯一方法。请注意,模型中的“$this
”命令指的是模型对象本身。
【讨论】:
以上是关于在 codeigniter 中调用 $CI 和使用 `this` 有啥不同吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在CodeIgniter中调用未定义的方法CI_DB_mysqli_result :: where()
021.CI4框架CodeIgniter, 通过命名空间调用其它目录中的Controller控制器文件
在Codeigniter中调用未定义的方法CI_DB_odbc_driver :: limit()
CI-CodeIgniter中“超级对象”:$CI =& get_instance()