Domanda

D'accordo, il titolo del post potrebbe essere un po 'di confusione.

ho questo codice:

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

class B extends A {

}

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

Output: C

Quello che voglio entrare in foo () è il nome della classe di B. Come posso fare questo senza cambiamenti nella classe B?

Saluti, Jan Oliver

PS:. __ __ CLASS, get_class () non funzionano

È stato utile?

Soluzione

Prima di PHP 5.3, questo non è possibile senza hack ed è noto come ritardo binding statico, un termine Googleable.

Se siete interessati, ecco l'articolo SO con risposte: Faking tardo binding statico prima di PHP 5.3

Altri suggerimenti

Penso che si potrebbe utilizzare il classe Riflessione built-in per questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top