当静态子类继承静态父类时,我想知道在使用self::和parent::之间有什么区别,例如:
class Parent {
public static function foo() {
echo 'foo';
}
}
class Child extends Parent {
public static function func() {
self::foo();
}
public static function func2() {
parent::foo();
}
}
func()和func2()之间有什么区别,如果有的话,请问是什么?
谢谢
敬礼
重写
了foo(),那么self::foo()
调用的是子类版本,而parent::foo()
调用的是原始父类版本。 - Mark Bakerstatic::foo()
让它变得更有趣 :) - Mark Bakerfoo()
方法,那么它将执行父类的foo()
代码... 调用方式有所不同,但执行的内容是相同的。调用parent::foo()
将始终执行父类的foo()
方法,即使子类对其进行了覆盖;调用self::foo()
将执行foo()
的覆盖版本(如果在 self 中存在),否则将执行父类的foo()
如果没有覆盖存在。 - Mark Baker