📜  self 和 $this 有什么区别?(1)

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

self 和 $this 的区别

在面向对象编程中,self 和 $this 都是关键字,但其使用有所不同。

self

self是一个指向当前类的指针,它可以在类的内部访问。使用 self 可以引用当前类的属性或方法。多数情况下,self 作为静态指针使用。

在类中使用 self 可以方便地访问和修改类的静态属性和方法。

class ExampleClass {
    public static $exampleProperty = 0;
    
    public static function exampleMethod() {
        self::$exampleProperty++;
    }
}

ExampleClass::exampleMethod(); 
echo ExampleClass::$exampleProperty; // 输出 1
$this

$this 是指向当前对象的指针,它只能在类的实例方法中使用。使用 $this 可以引用对象的属性和方法。$this 是关于动态指针的概念。

在 PHP 中,当前对象是 new 关键字创建的实例,表示当前方法所在的对象。

class ExampleClass {
    public $exampleProperty = 0;
    
    public function exampleMethod() {
        $this->exampleProperty++;
    }
}

$example = new ExampleClass();
$example->exampleMethod();
echo $example->exampleProperty; // 输出 1
总结
  • self 是指向当前类的指针,而 $this 是指向当前对象的指针
  • self 可以在类的任何方法中使用,用于引用该类的静态属性或方法
  • $this 只能在类的实例方法中使用,用于引用该对象的属性或方法

因此,取决于您想访问的属性或方法是类级别的还是实例级别的,您需要在 self 和 $this 中进行选择。