为什么PHP中的$ this总是引用当前的类?

时间:2010-07-01 10:38:44

标签: php

我是一名Java开发人员,在过去几周里我已经转向了黑暗的一面,因为我第一次尝试用PHP编写一些代码。

大多数东西似乎很熟悉,方法成为功能,。变成 - >,变量前面有一个$,你永远不知道它们是什么类型,我明白了,但我完全被$ this关键字所困扰。

我希望$ this可以像在java.myCoolMethod()中那样调用当前类中的函数,但是当我浏览我正在经历的开源项目时,$ this-> myCoolMethod()会调用功能完全不同!

这里发生了什么? '$ this'究竟意味着什么?

感谢您的帮助。

约翰

5 个答案:

答案 0 :(得分:2)

它有时在完全不同的类中调用方法的原因是因为该类可能使用该方法扩展了另一个类。

这是一个简单的例子:

class bla {
  public function __construct() {}

  public function whatwhat() {
    echo "what....";
  }
}

class lala extends bla {
  public function __construct() {}
}


$lalaObj = new lala();

$lala->whatwhat();

正如您所看到的,即使whatwhat()不在类中,它也会从它扩展的类继承它。

希望有所帮助。

答案 1 :(得分:1)

您应该看一下继承是什么。

答案 2 :(得分:1)

方法中的

$this指的是方法所属的对象。如果一个对象属于一个扩展另一个类的类,那么它可以从父类继承方法,可以使用$this->method_name()来调用它,就像使用任何其他方法一样。

答案 3 :(得分:0)

$ this实际上是指该类的当前实例。

  

$ this-> myCoolMethod()调用一个函数   在一个完全不同的阶层!

你能提供一个例子吗? myCoolMethod()可能未在类本身中定义的唯一情况是它是在父类还是继承类中定义的

答案 4 :(得分:0)

$this指的是您所在的任何实例。因此,如果我将Class_A扩展为Class B,并在methodName内调用Class_B,那么调用Class_B::methodName而不是Class_A::methodName

我不确定如何在不知道您遇到困难的情况下如何更清楚地解释,但尝试回复您使用__CLASS__旁边的$this来给您当前的班级名称进来。