关于php:“$ this”的目的是什么?

What is the purpose of “$this”?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What does $this mean in PHP?

$this的用途是什么?以下两种情况我都得到了正确的结果。

  • $this

    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Car {
      function Beetle($colour) {
        return $colour;
      }
    }

    $car = new Car();

    echo $car->Beetle("Blue");
  • $this一起

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Car {
      function Beetle($colour) {
        $this->colour = $colour;
        return $colour;
      }
    }

    $car=new Car();

    echo $car->Beetle("Blue");
  • 在这两个案例中,我得到了相同的结果:"蓝色"。我不明白我们为什么要使用$this


    $this是指用new操作符创建的实例化对象。

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

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


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

    没有这个;

    1
    2
    3
    4
    5
    6
    7
    8
    class Car{

      private $colour;

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

    带着这个;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Car{

      private $colour;

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

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

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


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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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);