📅  最后修改于: 2023-12-03 15:06:23.947000             🧑  作者: Mango
在PHP中,self和$this是两个常用的关键字。它们都可以用来引用类中的属性和方法。然而,self和$this有一些区别,需要在不同的情况下使用。
self是在类中引用该类本身的关键字。当要在类中引用该类的静态属性和方法时,应该使用self关键字。
class MyClass {
public static $myVar = "Hello world!";
public static function sayHello() {
echo "Hello from MyClass!";
}
public static function printMyVar() {
echo self::$myVar;
}
}
MyClass::printMyVar(); // 输出 "Hello world!"
$this是在类中引用该类的对象的关键字。当要在类中引用该对象的属性和方法时,应该使用$this关键字。
class MyClass {
public $myVar = "Hello world!";
public function sayHello() {
echo "Hello from MyClass!";
}
public function printMyVar() {
echo $this->myVar;
}
}
$myObj = new MyClass();
$myObj->printMyVar(); // 输出 "Hello world!"
简而言之,使用self关键字当需要引用类的静态属性和方法时,使用$this关键字当需要引用当前对象的属性和方法时。如果代码中混淆了两者的使用,就会导致程序出错。
public function foo() {
echo $this::$myVar; // 错误
echo self->myVar; // 错误
}
因此,在开发过程中,请根据实际需求使用正确的关键字,以避免由于混淆而导致程序出错。