1

好吧,帖子标题可能有点混乱。

我有这个代码:

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 类的情况下做到这一点?

问候,简·奥利弗

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

4

2 回答 2

2

在 PHP 5.3 之前,如果没有 hack,这是不可能的,这被称为后期静态绑定,这是一个 googleable 术语。

如果您有兴趣,这里是带有答案的 SO 文章:Faking Late Static Binding before php 5.3

于 2010-02-20T13:51:00.630 回答
0

我认为您可以为此使用内置的反射类

于 2010-02-20T13:52:37.753 回答