“$ this”的目的是什么?

时间:2011-06-13 08:30:22

标签: php oop this

  

可能重复:
  What does $this mean in PHP?

$this有什么用? 我在以下两种情况下都能正确得到结果。

  1. 没有$this

    class Car {
      function Beetle($colour) {
        return $colour;
      }
    }
    
    $car = new Car();
    
    echo $car->Beetle("Blue");
    
  2. 使用$this

    class Car {
      function Beetle($colour) {
        $this->colour = $colour;
        return $colour;
      }
    }
    
    $car=new Car();
    
    echo $car->Beetle("Blue");
    
  3. 在这两种情况下,我得到了相同的结果:“蓝色。”
    我不明白为什么以及我们使用的$this

3 个答案:

答案 0 :(得分:2)

$this是指使用new运算符创建的实例化对象。

您的第一个代码示例只返回传递给它的参数($colour)。

您的第二个示例将属性分配给其对象(使用$this),然后再次返回该参数。

答案 1 :(得分:1)

据我所知, $ this 用于访问您所在类中的变量和方法,它本质上是该类的一个对象。在两个示例中,无论如何都要返回输入参数。

没有 $ this ;

class Car{

  private $colour;

  function Beetle($colour) {
    return $this->colour;
  }
}

使用 $ this ;

class Car{

  private $colour;

  function Beetle($colour) {
    $this->colour = $colour;
    return $this->$colour;
  }
}

我想在这里向您展示的是,在第一个示例中,它将返回null,因为属性颜色尚未由函数设置,而第二个示例它将属性设置为输入变量并将返回传入的值。

简而言之, $ this 是我们访问属于该类的属性和方法的方式。

答案 2 :(得分:0)

因为您可能有多个同一类的实例(对象)。

class Car {
   var colour;
   var parkedNextTo;
   function setColout($colour)
   {
      $this->colour=$colour;
   }
   function park($nextTo)
   {
      $this->$nextTo=$nextTo;
   }
}

$beetle=new Car();
$beetle->setColour('blue');

$jeep=new Car();
$jeep->setColour('red');
$jeep->nextTo($beetle);