PHP中$this和self的区别

$this

[toc]

$this 代表当前对象实例(Object Instance)的引用。只能在类的非静态方法中使用,用于访问当前实例的非静态成员(非静态属性和非静态方法)。

self

self 指向当前(Class)本身。常用于在类内部访问静态成员(静态属性、静态方法)以及类常量(const)。与 $this 不同,self 不依赖于对象实例。

操作符

  • -> (对象操作符): 用于通过对象实例访问非静态成员(属性或方法)。通常与 $this 结合(如 $this->property)。
  • :: (范围解析操作符 / 双冒号): 用于访问静态属性、静态方法或类常量。通常与 self 结合(如 self::$staticPropertyself::CONSTANT)。

$this 和 self 的核心区别:

  1. 指向不同$this 指向当前对象实例,而 self 指向类本身。
  2. 适用成员$this 用于访问非静态成员,self 用于访问静态成员和类常量。self 无法直接访问非静态属性。
  3. 静态方法限制:在静态方法中,不能使用 $this(因为静态方法被调用时可能还没有对象实例),只能使用 self
1
2
3
4
5
6
// 访问非静态成员(属性或方法)使用 $this -> member
$this->member;

// 访问类本身定义的静态成员使用 self::$member,访问常量使用 self::CONSTANT
self::$staticMember;
self::CONSTANT_NAME;

PHP中$this和self的区别
https://nanxfu.github.io/2020/03/28/PHP中$this和self的区别/
Beitragsautor
nanxfu
Veröffentlicht am
March 28, 2020
Urheberrechtshinweis