跳到主要内容

PHP $this和self、parent这三个关键词分别代表什么?在哪些场合下使用?

参考答案:

在PHP中,$thisselfparent是三个非常重要的关键词,它们各自具有特定的用途和含义。

  1. $this

$this是一个特殊的变量,它代表一个对象实例的引用。在面向对象编程中,当你在类的内部访问类的属性或方法时,可以使用$this来引用当前对象。

使用场合

  • 访问当前对象的属性或方法。
  • 在构造函数中初始化对象的属性。
  • 在类的内部需要引用当前对象的其他部分时。

示例:

class MyClass {
    public $myVar = 'Hello';
    
    public function myFunction() {
        echo $this->myVar; // 输出 'Hello'
    }
}

$obj = new MyClass();
$obj->myFunction(); // 输出 'Hello'
  1. self

self是一个静态上下文关键字,它用于引用当前类的类名。当你在类的方法内部,尤其是静态方法中需要引用当前类的其他静态属性或静态方法时,可以使用self

使用场合

  • 在静态方法中访问静态属性或调用静态方法。
  • 在非静态方法中访问静态属性或调用静态方法,但想要明确表示你引用的是类级别的东西,而不是实例级别的。

示例:

class MyClass {
    public static $myStaticVar = 'Static Hello';
    
    public static function myStaticFunction() {
        echo self::$myStaticVar; // 输出 'Static Hello'
    }
}

MyClass::myStaticFunction(); // 输出 'Static Hello'
  1. parent

parent也是一个静态上下文关键字,它用于引用当前类的父类。当你在子类中需要访问父类的属性或方法时,可以使用parent

使用场合

  • 在子类中重写父类的方法时,需要调用父类被重写的方法。
  • 在子类中需要访问父类的属性或方法时。

示例:

class ParentClass {
    public function sayHello() {
        echo 'Hello from Parent';
    }
}

class ChildClass extends ParentClass {
    public function sayHello() {
        parent::sayHello(); // 调用父类的sayHello方法
        echo ' and Hello from Child';
    }
}

$obj = new ChildClass();
$obj->sayHello(); // 输出 'Hello from Parent and Hello from Child'

总结:

  • $this用于引用当前对象实例。
  • self用于引用当前类的类名,主要用于静态上下文。
  • parent用于引用当前类的父类,常用于子类中访问父类的属性或方法。