我知道这个问题很傻,
在所有的教程中,他们都没有解释为什么使用$this。
$this是否像Codeigniter中基类的对象?
欢迎任何解释!:)
谢谢
实际上回答你的问题,$this
实际上代表了单例Codeigniter实例(这实际上是控制器对象)。
例如,当你加载库/模型时,你把它们附加到这个实例上,这样你就可以把它们作为这个实例的属性来引用。
在codeigniter中获得此实例的另一种方法是构建可移植库时使用的get_instance()
函数。
$this
在PHP中是当前对象。在类定义中,使用$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;
$this
不是来自CodeIgniter的东西,而是来自PHP。$this
是指当前对象。
当你创建这样一个实例时:
$something = new SomeClass();
那么$this
是指从SomeClass
创建的实例,在本例中是$something
。无论何时在类本身中,都可以使用$this
来引用这个实例。所以:
class SomeClass {
public $stuff = 'Some stuff';
public function doStuff()
{
$this->stuff;
}
}
就编码者而言:
您将注意到,codeigniter中的每个控制器都扩展了基控制器类。在控制器中使用$this
使您可以访问控制器中定义的所有内容,以及从基本控制器继承的内容。
你将从$this
中得到的大部分使用涉及调用基类已经为你加载的方法- $this->load
, $this->uri
等。
如果我没记错的话,视图中的PHP代码是在控制器的上下文中运行的,所以您也可以从那里使用$this
访问控制器对象。
我刚刚读了一篇关于$this和类的文章:http://query7.com/using-this-in-php
在PHP中,关键字" $this "用作类和的自引用您可以使用它来调用和使用这些属性和方法如下例所示。
这是一种从自身内部引用类实例的方法,与许多其他面向对象语言相同。伪变量$this在对象上下文中调用方法时可用. ...$this主要用来引用类
$this
用于在扩展类中获取/加载helper,库,数据库,全局变量等内容。
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->load->library("pagination");