php:在静态方法中获取继承类的名称

时间:2010-02-20 13:47:37

标签: php static-methods late-binding

好的,帖子标题可能有点令人困惑。

我有这段代码:

class A {
    public static foo() {
        return get_called_class();
    }
}

class B extends A {

}

class C {
    public function bar() {
        echo B::foo();
    }
}

输出:C

我想要进入foo()的是B的类名。如果没有B类的更改,我怎么能这样做呢?

此致 Jan Oliver

PS:__ CLASS __,get_class()不起作用。

2 个答案:

答案 0 :(得分:2)

在PHP 5.3之前,如果没有黑客攻击,这是不可能的,并且被称为后期静态绑定,这是一个可谷歌的术语。

如果您有兴趣,可以在这篇文章中找到答案:Faking Late Static Binding before php 5.3

答案 1 :(得分:0)

我认为您可以使用内置的 Reflection class