【发布时间】:2015-09-19 04:45:26
【问题描述】:
我试图了解后期静态绑定,并通过阅读几个堆栈溢出问题和手册,除了我不明白为什么,在我找到的所有示例中(包括手册) ,直接回显类名的方法在子类中重复。
我的理解是,从另一个类扩展而来的类会继承其父类的所有方法和属性。因此,为什么在后期静态绑定的PHP手册示例中重复了who()方法。我意识到没有它,父类会被回显,但无法理解为什么。
查看手册中的代码...
<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who(); // Here comes Late Static Bindings
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test();
?>
为什么需要重写 who() 方法,我认为它必须是相同的?提前致谢。
【问题讨论】:
-
一目了然,它看起来纯粹是为了显示哪个类的方法正在触发
-
删除它并调用基类方法
-
是的,因为您正在扩展类并覆盖方法。这是标准的 PHP OOP 行为。
-
但是用与父类完全相同的方法覆盖该方法 - 这肯定已经被继承了?
-
它们在内容上可能看起来相同,但在实现上却不同。它们也是不同的实例。这个特殊的例子is not specific to static methods.
标签: php mysql class late-static-binding