用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1352|回复: 2
收起左侧

[HELP] 使用$CI和使用$this什么差别?

[复制链接]
发表于 2016-3-28 14:56:36 | 显示全部楼层 |阅读模式
使用$CI和使用$this什么差别?
看来一段时间的代码,发现两种都有人用,似乎使用$CI并不在文档推荐的方法nei
发表于 2016-3-30 18:02:56 | 显示全部楼层
说一下我的理解,如有错误的地方,请指正。
对于CI框架来说,$CI是个超级对象,一次运行中的所有操作都是在这个对象上,也就是入口控制器的对象。$this的话是指当前类的一个对象,之所以题主会有这样的疑问,是因为在CI的Model中,有个魔术方法__get(),所以在你使用$this访问无法访问的属性时,会把$this转为$CI,这样看来两者似乎没什么区别,但关键在于,如果你访问的属性在类内($this)中存在,也在$CI中存在,那么你访问到的是类内的属性。
所以,我觉得可以看成$this是$CI的一个子对象,这就它两的差别,但至于推荐,我是觉得能用$this的就不要用$CI
发表于 2016-3-31 10:17:45 | 显示全部楼层
要我说 $this是一种存在超级对象  至于$CI嘛  如果你不想用$this  或者在controller外的地方用$this的话你得先实例化$this  比如:$CI =& get_instance();

本版积分规则