【发布时间】:2012-04-18 15:30:36
【问题描述】:
使用 PHP 5.3+ 并具有等于以下内容的内容,我得到的输出是“C”而不是“B”:
class A
{
public static function doSomething()
{
echo get_called_class();
}
}
class B extends A
{
public static function doMore()
{
self::doSomething();
}
}
class C extends B {}
C::doMore();
如果我使用了 static::doSomething(),那将是预期的结果,但是当使用 self::doSomething() 时,我希望在 B 的范围内调用此方法,因为它是定义“self”的地方而不是后期的静态绑定。
这是如何解释的?如何在 doSomething() 方法中获得“B”?
提前致谢,JS
【问题讨论】: