$ this是什么意思

时间:2010-09-12 22:10:19

标签: php variables

我在一个有OOP的PHP脚本中看到一些脚本包含$this,我从来不知道它的含义......比如

$this->refresh();

也许向我解释$this指的是......?

但我知道你不能将它用作$this_is_a_variable这样的动态变量,但为什么不能将它用作动态变量呢?

4 个答案:

答案 0 :(得分:19)

$this是对当前对象的引用。

它只能用于类方法。

来自the manual:

  

当从对象上下文中调用方法时,伪变量$ 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可以直接用于引用当前对象,而不是检索对象并将其分配给不同的变量。