关于php:如何以最简单的方式解释’this’关键字?

How to explain 'this' keyword in a best and simple way?

我使用"this"关键字已经很长时间了。但当有人要我解释的时候,我对如何解释感到困惑。我知道我可以在类的方法中使用它来访问同一类的任何变量和方法。

1
2
3
4
5
6
7
8
9
10
11
    class MyClass{

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

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

    }

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

谢谢


类是对象的模型:它指定对象的外观(变量)以及它可以做什么(函数)。

如果您声明一个类:您创建一个对象。如果创建类,可以使用"this"来引用对象本身。这就是为什么不能设置"this",因为它与对象相关。它是一个特殊的只读变量。


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

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


有几个人用类似的术语解释过它,但我想补充一点,当与不熟悉面向对象编程的人交谈时,我解释说类定义是一个蓝图,对于一个房子,"这个"是你当时正在使用的实际房子。可能还有其他房子看起来完全一样,但这是特定的对象(房子)。


正如它们的名字所暗示的,实例方法对类的实例进行操作。他们怎么知道该操作哪一个?这就是this参数的作用。

当您调用一个实例方法时,您实际上是无形地传入了一个额外的参数:要调用它的对象。例如,当您拥有此功能时:

1
2
3
4
5
6
7
class Basket {
  public function a() {
    $this-> ...;
    // ...
  }
  // ...
}

你称之为$some_basket->a(),在幕后你实际上称之为Basket::a($some_basket)。现在,a()知道你想和哪个Basket合作。这个特殊参数是this所指的:您正在处理的当前对象。


短路:$this允许您访问对象变量(和方法)edit:在类内:)edit 2:(但不在类的静态方法中):d


类是对象的模板或"die"。

让我们用经典的"自行车"例子。外面有许多笨手笨脚的自行车。但是,我们已经创建了一辆自行车,我们可以使用"this"关键字来引用"this"自行车。

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