📜  PHP中的 $this 关键字

📅  最后修改于: 2022-05-13 01:56:25.105000             🧑  作者: Mango

PHP中的 $this 关键字

$this是PHP中的保留关键字,它引用调用对象。它通常是该方法所属的对象,但如果该方法是从辅助对象的上下文中静态调用的,则可能是另一个对象。此关键字仅适用于内部方法。

示例 1:一个简单的程序来展示$this在PHP中的使用。

k;
    }
}
  
$obj = new simple();
echo $obj->display();
  
?>

输出:

9

$this – 一个伪变量:与类上下文中使用的其他保留关键字不同,例如 static、parent 等,不需要用美元符号 ('$') 声明。这是因为在PHP中$this被视为伪变量。
在PHP中,这被声明为变量声明(带有 '$' 符号),即使它是保留关键字。更具体地说, $this是一个特殊的只读变量,它没有在代码中的任何地方声明,它表示一个根据程序执行上下文而变化的值。

示例 2:使用$this关键字更新特定对象的变量值的程序。

k = $val;
    }
  
    public function display(){
        return $this->k;
    }
}
  
$obj = new simple();
print("value of before update: ");
echo $obj->display();
  
$obj->change(8);
print("value of after update: ");
echo $obj->display();
?>

输出:

value of before update: 9
value of after update: 8

从PHP 7.0.0 开始,从不兼容的上下文中静态调用非静态方法会导致$this对该方法“未定义”。自PHP 5.6.0 起,从不兼容的上下文中静态调用非静态方法已被弃用。从PHP 7.0.0 开始,静态调用非静态方法已被弃用(即使从兼容的上下文中调用)。在PHP 5.6.0 之前,此类调用已经触发了严格的通知。

示例 3:在此示例中,当在静态方法的上下文中调用非静态方法时, $this关键字变为“未定义”。

foo();
  
A::foo();
  
$b = new B();
$b->bar();
  
B::bar();
?>

输出:

$this is defined (A) 
$this is not defined. 
$this is not defined. 
$this is not defined.