【问题标题】:Can anyone tell me the difference between $this keyword谁能告诉我 $this 关键字之间的区别
【发布时间】:2016-08-24 05:52:30
【问题描述】:

$this 关键字有什么用?两种情况的输出都是相同的,那么为什么我们需要使用 $this 关键字。以及在哪里使用了 $this 关键字。

<?php
 class Test
 {
  private $var;
  public function func1()
   {
    $this->var = 1;     
    return $this->var;
   }
  public function func2()
  {
    $var = 2;       
    return $var;
  }
}

$obj = new Test();

echo $obj->func1();
echo $obj ->func2();

?>

案例 12 和 12 的输出。

【问题讨论】:

标签: php


【解决方案1】:

它是对当前对象的引用,它最常用于面向对象的代码中。

它实际上是引用当前类的实例。

【讨论】:

  • 在函数中总是引用当前的 obj。你是说全局变量还是局部变量。
  • 是的,它通常是该方法所属的对象,但只有在从辅助对象的上下文中静态调用该方法时才可能是另一个对象
【解决方案2】:

通俗的讲,我们可以说$this是用来引用当前对象的,你可以在这里What is $this keyword meant for?或者How to explain 'this' keyword in a best and simple way?得到一个很好的解释

【讨论】:

    【解决方案3】:

    $this 指的是当前对象

    $this->var = 1;

    $object->var 值已更改为 1。


    $var = 2;

    $object->var 没有改变。

     class Test
     {
      public $var = 0;
      public function func1()
       {
        $this->var = 1;     
        return $this->var;
       }
      public function func2()
      {
        $var = 2;       
        return $var;
      }
    }
    
    $obj = new Test();
    
    echo "By default $obj->var is : ".$obj->var;
    $obj->func1();
    echo "<hr />By func1 $obj->var change to : ".$obj->var;
    $obj->func2();
    echo "<hr />By func2 $obj->var still is : ".$obj->var;
    exit;

    输出

    By default $obj->var is : 0
    By func1 $obj->var change to : 1
    By func2 $obj->var still is : 1

    【讨论】:

    • $var 不是对象。它是一个属性($this->var)或一个变量($var)
    猜你喜欢
    • 1970-01-01
    • 2012-09-25
    • 2023-02-07
    • 2012-12-23
    • 2011-10-22
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多