我在一个有OOP的PHP脚本中看到一些脚本包含$this
,我从来不知道它的含义......比如
$this->refresh();
也许向我解释$this
指的是......?
但我知道你不能将它用作$this_is_a_variable
这样的动态变量,但为什么不能将它用作动态变量呢?
答案 0 :(得分:19)
$this
是对当前对象的引用。
它只能用于类方法。
当从对象上下文中调用方法时,伪变量$ this可用。 $ this是对调用对象的引用(通常是方法所属的对象,但如果从辅助对象的上下文中静态调用该方法,则可能是另一个对象)。
一个简单的现实世界的例子:
class Classname
{
private $message = "The big brown fox... jumped....";
function setMessage($givenMessage) {
$this->message = $givenMessage;
}
function getMessage() {
return $this->message; // Will output whatever value
// the object's message variable was set to
}
}
$my_object = new Classname(); // this is a valid object
echo $my_object->getMessage(); // Will output "The big brown fox... jumped...."
$my_object->setMessage("Hello World!");
echo $my_object->getMessage(); // Will output "Hello world"
在 static 上下文中调用方法时, $this
不可用:
Classname::showMessage(); // Will throw an error:
// `$this` used while not in object context
答案 1 :(得分:4)
如果您正在进行OOP,那么您可以使用类。你可以:
class CFoo
{
private $var;
public function setFoo($fooVal)
{
$this->var = $fooVal;
}
}
$ this指的是该类的当前对象。
答案 2 :(得分:3)
在PHP中创建类时,有时您可能需要引用类*本身。 $this
变量保留用于此目的。
**这应该是正确的'引用创建的对象'而不是类。这在语义上更正确。*
例如:
class Car
{
private $make;
public function setMake($make)
{
$this->make = $make;
}
public function setModel($model)
{
$this->model = $model;
}
public function whatCar()
{
return "This car is a " . $this->make . " " . $this->model;
}
}
使用它看起来像:
$car = new Car();
$car->setMake('Ford');
$car->setModel('Escort');
echo $car->whatCar();
//This car is a Ford Escort
答案 3 :(得分:0)
$ this指的是该类的当前对象。 $ this用于特定类成员的方法中。因此,在这些方法中,该方法已经具有关于该类的特定“实例”的信息。所以$ this可以直接用于引用当前对象,而不是检索对象并将其分配给不同的变量。