문제

Okay, the post title might be a little confusing.

I have this code:

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

class B extends A {

}

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

Output: C

WHat I want to get in foo() is the class name of B. How can I do this without changes in the class B?

Regards, Jan Oliver

PS: __ CLASS __, get_class() are not working.

도움이 되었습니까?

해결책

Before PHP 5.3, this is not possible without hacks and is known as late static binding, a googleable term.

If you're interested, here is the SO article with answers: Faking Late Static Binding before php 5.3

다른 팁

I think you could use the built-in Reflection class for that.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top