📜  PHPself::$bar 和 static::$bar 的区别(1)

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

PHPself::$bar和static::$bar的区别

在PHP编程中,经常会使用静态方法和静态属性,这些成员要使用self或static关键字,而在self和static之间存在一些差异。本文将介绍PHP中self::$bar和static::$bar的区别。

self::$bar

self是一个指向类自身的指针,它可以用于访问当前类的静态属性或方法。self::$bar用于访问当前类的静态属性$bar。

下面是一个示例代码:

class MyClass {
     public static $bar = 'hello';
 
     public static function printBar() {
        echo self::$bar;
     }
}
 
MyClass::printBar(); //输出 hello
static::$bar

static是一个指向当前运行时类的指针。它可以在父类和子类中访问静态属性或方法。static::$bar用于访问当前类或其子类的静态属性$bar。

下面是一个示例代码:

class MyParentClass {
     public static $bar = 'parent';
}
 
class MyClass extends MyParentClass {
     public static function printBar() {
        echo static::$bar;
     }
}
 
class MyChildClass extends MyClass {
     public static $bar = 'child';
}
 
MyClass::printBar(); //输出 parent
MyChildClass::printBar(); //输出 child

启示:self指向的是当前类,而static指向的是当前运行时类,可能是当前类或其子类。在使用静态方法和属性时,需要考虑到这一点。

以上就是PHP中self::$bar和static::$bar的区别,除此之外,还有许多有趣的PHP问题等待着你去探索。