Codeigniter $this和$this之间的差异->;共点火器中的ci

Codeigniter $this和$this之间的差异->;共点火器中的ci,codeigniter,variables,php,Codeigniter,Variables,Php,您好,我正在使用codeigniter,在我的控制器构造函数中,有时我使用$this有时$this->ci 在两个构造函数中,我使用了这样的 public function __construct() { $this->ci =& get_instance(); $this->ci->load->library('form_validation'); $this->ci->load->library('catalog/Ca

您好,我正在使用codeigniter,在我的控制器构造函数中,有时我使用
$this
有时
$this->ci

在两个构造函数中,我使用了这样的

public function __construct()
{
    $this->ci =& get_instance();
    $this->ci->load->library('form_validation');
    $this->ci->load->library('catalog/CatalogManager');
}

function __construct() 
    {
    parent::__construct ();
    $this->ci = & get_instance ();
    $this->load->library ( 'auth_lib' );
    $this->load->library ( 'session' );
    }
将数据传递到视图时,我使用

在上述两种情况下,
$this->ci->data
$this->data

两者都没有给出错误,但我很困惑,正确的用法是什么


请帮助………..

所有控制器都扩展了主CI_控制器,因此调用类似于
$this->load
的东西意味着访问父类CI_控制器内的父方法
load()

$this->ci
之所以有效,是因为使用
$this->ci=&get\u instance()
您再次调用了对主控制器类的引用。如果您查看引导文件(IIRC.或codeigniter.php文件),就会看到函数
get_instance()
,它只返回(通过引用)CI_控制器类的实例

因此,基本上,调用
$this->ci->load
$this->load
是完全一样的,只是第一个在控制器/模型/视图中是不必要的,因为系统已经在父类中(通过load方法)这样做了

例如,如果您查看库,您将看到使用
$this->ci->method()
是必要的,因为您需要提供ci_控制器的所有方法,这是一种驱动整个框架的“超级类”


查看loader类和CodeIgniter类以了解CI内部的工作方式。

所有控制器都扩展了主CI_控制器,因此调用类似于
$this->load的东西意味着访问父类CI_控制器内的父方法
load()

$this->ci
之所以有效,是因为使用
$this->ci=&get\u instance()
您再次调用了对主控制器类的引用。如果您查看引导文件(IIRC.或codeigniter.php文件),就会看到函数
get_instance()
,它只返回(通过引用)CI_控制器类的实例

因此,基本上,调用
$this->ci->load
$this->load
是完全一样的,只是第一个在控制器/模型/视图中是不必要的,因为系统已经在父类中(通过load方法)这样做了

例如,如果您查看库,您将看到使用
$this->ci->method()
是必要的,因为您需要提供ci_控制器的所有方法,这是一种驱动整个框架的“超级类”


查看loader类和CodeIgniter类,了解CI内部是如何工作的。

同意上述答案,但实际上,load是一个变量,而不是一个函数。它是类CI_Loader的对象,当您调用$this->load->libary()时,实际上它调用了CI_Loader中的library()函数。

同意上面的答案,但实际上,load是一个变量,而不是一个函数。它是类CI_Loader的对象,当您调用$this->load->libary()时,实际上它调用了CI_Loader中的library()函数。

什么都不是。它只是用来存储值。它就像一个变量。

$this
什么都不是。它只是用来存储值。它就像一个变量。

一个声称是php5的框架需要=&assignments,这有点令人遗憾。@gview我从来没有在这个框架中使用过
=&
赋值CI@gview它只是与php4向后兼容,不应该被使用,尤其是在上面的上下文中。有点遗憾的是,一个声称是php5的框架需要=&assignments.@gview我从来没有使用过
=&
作业CI@gview它只能向后兼容php4,不应该使用,尤其是在上面的上下文中。Damien Pirsy已经很好地解释了这个问题,我要说我的经验:我发现
&get_instance()
返回处理此请求的当前控制器,它继承自最基本的
CI_控制器
;虽然
$this->ci
特别指的是
ci_控制器的实例
Damien Pirsy已经很好地解释了这个问题,我要说我的经验:我发现
&get_instance()
返回处理此请求的当前控制器,它继承自最基本的
ci_控制器
;而
$this->ci
具体指的是
ci\u控制器的实例