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.