我知道愚蠢的问题,
从所有教程中,他们都没有解释为什么他们使用$ this。
$ this是否是Codeigniter中基类的对象?
任何解释都会受到欢迎! :)
由于
答案 0 :(得分:18)
要实际回答您的问题,$this
实际上代表单身Codeigniter实例(实际上是控制器对象)。
例如,当您加载库/模型时,您将它们附加到此实例,以便您可以将它们作为此实例的属性引用。
在codeigniter中获取此实例的另一种方法是在构建可移植库时使用的get_instance()
函数。
答案 1 :(得分:7)
$this
是当前对象。在类定义中,使用$this
来处理当前对象。以这堂课为例:
class Hello {
public $data = 'hello';
function hi() {
$this->data = 'hi';
}
}
您可以多次实例化此类,但$data
只会在您调用该函数的对象中更改为hi
:
$one = new Hello;
$two = new Hello;
$two->hi();
echo $one->data, "\n", $two->data;
答案 2 :(得分:6)
$this
不是来自CodeIgniter,而是来自PHP。 $this
指的是当前对象。
每当你创建这样的实例时:
$something = new SomeClass();
然后$this
指的是从SomeClass
创建的实例,在本例中为$something
。无论何时进入类本身,都可以使用$this
来引用此实例。
所以:
class SomeClass {
public $stuff = 'Some stuff';
public function doStuff()
{
$this->stuff;
}
}
答案 3 :(得分:4)
就codeigniter而言:
您会注意到codeigniter中的每个控制器都扩展了基本控制器类。在控制器中使用$this
可以访问控制器中定义的所有内容,以及从基本控制器继承的内容。
您将从$this
中获得的大部分用途都涉及调用基类为您加载的方法 - $this->load
,$this->uri
等。
如果我没记错的话,视图中的PHP代码在控制器的上下文中运行,因此您也可以从那里访问带有$this
的控制器对象。
答案 4 :(得分:1)
我刚读了一篇关于$ this和一般课程的好文章:http://query7.com/using-this-in-php
在PHP中,关键字“$ this”用作类的自引用 您可以使用它来调用和使用这些属性和方法 如下例所示。
答案 5 :(得分:0)
这是从内部引用类的实例的方法,与许多其他面向对象的语言相同。从PHP文档:当从对象上下文中调用方法时,伪变量$ this可用。 ... $ this主要用于引用类的属性