使用 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