我正在使用'this'关键字很长一段时间。但当有人要我解释时,我很困惑,如何解释它。我知道我可以在类的方法中使用它来访问同一个类的任何变量和方法。
class MyClass{
function MyMethod1(){
echo "Hello World";
}
function MyMethod2(){
$this->MyMethod1();
}
}
它是一个类的对象,我们不需要初始化,只能在类或其他任何内容中使用。如何解释?
谢谢
答案 0 :(得分:13)
类是对象的模具:它指定对象的外观(变量)以及它可以做什么(函数)。
如果您实例化一个类:您创建一个对象。如果您创建了类,则可以使用“this”来引用该对象。这就是为什么你不能设置“this”,因为它与对象有关。这是一个特殊的只读变量。
答案 1 :(得分:5)
this
引用类的当前对象实例。
this
是传递给类方法的隐式参数:它的作用域是一个方法,允许访问所有对象的成员。
答案 2 :(得分:2)
短:
$this
允许您访问类中的对象变量(和方法)编辑: :) 编辑2:(但不是在类的静态方法中) :D
答案 3 :(得分:2)
就像他们的名字所暗示的那样,实例方法在类的实例上运行。他们如何知道要操作哪一个?这就是this
参数的用途。
当你调用一个实例方法时,你真的无形地传入了一个额外的参数:要调用它的对象。例如,当你有这个:
class Basket {
public function a() {
$this-> ...;
// ...
}
// ...
}
你打电话给$some_basket->a()
,在幕后你实际上打的是Basket::a($some_basket)
。现在a()
知道您要使用哪个Basket
。该特殊参数是this
引用的:您正在处理的当前对象。
答案 4 :(得分:2)
有几个人用类似的术语对它进行了解释,但我想补充一点,在与不熟悉面向对象编程的人交谈时,我解释说类定义是蓝图,就像房子一样,“这个”就是那个时候你正在和你合作的房子。可能有其他房屋看起来完全一样,但这是特定的对象(房子)。
答案 5 :(得分:1)
类是对象的模板或“骰子”。
让我们使用经典的“自行车”示例。那里有许多huffy自行车。但是,我们创建了一辆自行车,我们可以使用'this'关键字来指代'this'自行车。
在更多技术意义上,类是要实例化的对象的模板。在运行时,在实例化对象或创建了自己的实例之后,我们可以在内部使用关键字“this”来引用运行该方法的实例。