📜  什么时候在PHP使用 self 而不是 $this ?(1)

📅  最后修改于: 2023-12-03 15:06:23.947000             🧑  作者: Mango

什么时候在PHP使用 self 而不是 $this ?

在PHP中,self和$this是两个常用的关键字。它们都可以用来引用类中的属性和方法。然而,self和$this有一些区别,需要在不同的情况下使用。

self关键字

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是在类中引用该类的对象的关键字。当要在类中引用该对象的属性和方法时,应该使用$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; // 错误
}

因此,在开发过程中,请根据实际需求使用正确的关键字,以避免由于混淆而导致程序出错。