好了,文章标题可能有点混乱。

我有这样的代码:

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()不工作

有帮助吗?

解决方案

PHP 5.3之前,这是不可能的,而不黑客和被称为晚期静态绑定,一个googleable术语

如果你有兴趣,这里是SO文章的答案:的伪造晚期静态PHP 5.3

之前结合

其他提示

我想你可以使用内置的 反思类 作为这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top