Question

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.

Was it helpful?

Solution

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

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top