如何以最简单的方式解释'this'关键字?

问题描述:

我长时间使用'this'关键字。但是当有人问我解释它时,我很困惑如何解释它。我知道我可以在类的方法中使用它来访问同一类的任何变量和方法。如何以最简单的方式解释'this'关键字?

class MyClass{ 

     function MyMethod1(){ 
     echo "Hello World"; 
     } 

     function MyMethod2(){ 
     $this->MyMethod1(); 
     } 

    } 

它是一个类的对象,我们不需要初始化,只能在类或其他类中使用。如何解释?

感谢

+1

经过一段合理时间后,大部分选票的答案都被接受。 – NAVEED 2010-01-26 17:44:14

+0

这是一篇很好的文章** [在PHP中使用关键字“this”](http://www.webdevelopmentbits.com/using-this-in-php)** – rahul 2010-01-19 14:18:38

一个类是一个对象模型:它指定了对象的外观(变量)以及它可以做什么(功能)。

如果你创建一个类:创建一个对象。如果你创建了这个类,你可以使用“this”来引用这个对象。这就是为什么你不能设置“this”,因为它与对象有关。这是一个特殊的只读变量。

+5

它是一个特殊的只读变量,可用于引用对象本身。这是对的吗 ? – NAVEED 2010-01-19 14:21:17

+0

是的,它是正确的。 – Pindatjuh 2010-01-19 14:30:50

this引用类的当前对象实例。

this是一个传递给类方法的隐含参数:它的作用域是一个方法并允许访问所有对象的成员。

+1

可能不够基本,但这是在技​​术上是最正确的答案。 – 2010-01-19 14:51:20

短: $this,您可以访问该对象变量(和方法)编辑:类中 :) 编辑2:(但不是在类的静态方法):d

+3

内类:) – NAVEED 2010-01-19 14:22:08

+0

纠正;)thx队友 – dfens 2010-01-19 14:26:03

+0

但在类的静态方法:)) – NAVEED 2010-01-19 14:33:21

像他们的名字暗示,实例方法在实例上运行。他们如何知道在哪一个工作?这就是this参数的用途。

当你调用一个实例方法时,你真的无形中传入了一个额外的参数:要调用它的对象。例如,当你有这样的:

class Basket { 
    public function a() { 
    $this-> ...; 
    // ... 
    } 
    // ... 
} 

和你打电话$some_basket->a(),在幕后,你实际上调用类似Basket::a($some_basket)。现在a()知道你想要使用哪个Basket。该特殊参数是this引用的内容:您正在处理的当前对象。

一个类是一个模板或一个对象的'死'。

让我们使用经典的“自行车”示例。那里有许多自行车。但是,我们已经创建了一辆自行车,我们可以使用'this'关键字来指代'this'自行车。

从更技术性的角度来看,类是一个将被实例化的对象的模板。在运行时,在实例化对象或创建了自己的实例之后,我们可以在内部使用关键字“this”来引用运行该方法的实例。

有几个人用类似的术语来解释它,但是我想补充说,当向不熟悉面向对象编程的人们讲话时,我解释说类定义是蓝图,就像一个房子一样,“this”是在那个时刻你正在与之合作的房子。可能有其他房子看起来完全一样,但这是特定的对象(房子)。