【问题标题】:What is the purpose of "$this"? [duplicate]“$this”的目的是什么? [复制]
【发布时间】:2011-09-13 18:21:30
【问题描述】:

可能重复:
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");
    

在这两种情况下,我都得到相同的结果:“蓝色”。
我不明白我们使用$this 的原因和目的。

【问题讨论】:

标签: php oop this


【解决方案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】:

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

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);

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 你能用简单的英语回答这个问题吗?我告诉你我是新手。我非常了解程序 php,甚至创建了 Buysellads 的 TIny 克隆,但这个问题让我大吃一惊。请帮助 alex.pls 请尽力而为
    • @ask 哪一部分让你感到困惑?
    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 2020-04-04
    • 2011-05-10
    • 2018-11-25
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多