如何以最简单的方式解释'this'关键字?
我长时间使用'this'关键字。但是当有人问我解释它时,我很困惑如何解释它。我知道我可以在类的方法中使用它来访问同一类的任何变量和方法。如何以最简单的方式解释'this'关键字?
class MyClass{
function MyMethod1(){
echo "Hello World";
}
function MyMethod2(){
$this->MyMethod1();
}
}
它是一个类的对象,我们不需要初始化,只能在类或其他类中使用。如何解释?
感谢
this
引用类的当前对象实例。
this
是一个传递给类方法的隐含参数:它的作用域是一个方法并允许访问所有对象的成员。
可能不够基本,但这是在技术上是最正确的答案。 – 2010-01-19 14:51:20
像他们的名字暗示,实例方法在实例上运行。他们如何知道在哪一个工作?这就是this
参数的用途。
当你调用一个实例方法时,你真的无形中传入了一个额外的参数:要调用它的对象。例如,当你有这样的:
class Basket {
public function a() {
$this-> ...;
// ...
}
// ...
}
和你打电话$some_basket->a()
,在幕后,你实际上调用类似Basket::a($some_basket)
。现在a()
知道你想要使用哪个Basket
。该特殊参数是this
引用的内容:您正在处理的当前对象。
一个类是一个模板或一个对象的'死'。
让我们使用经典的“自行车”示例。那里有许多自行车。但是,我们已经创建了一辆自行车,我们可以使用'this'关键字来指代'this'自行车。
从更技术性的角度来看,类是一个将被实例化的对象的模板。在运行时,在实例化对象或创建了自己的实例之后,我们可以在内部使用关键字“this”来引用运行该方法的实例。
有几个人用类似的术语来解释它,但是我想补充说,当向不熟悉面向对象编程的人们讲话时,我解释说类定义是蓝图,就像一个房子一样,“this”是在那个时刻你正在与之合作的房子。可能有其他房子看起来完全一样,但这是特定的对象(房子)。
经过一段合理时间后,大部分选票的答案都被接受。 – NAVEED 2010-01-26 17:44:14
这是一篇很好的文章** [在PHP中使用关键字“this”](http://www.webdevelopmentbits.com/using-this-in-php)** – rahul 2010-01-19 14:18:38