Question

D'accord, le titre de poste peut être un peu déroutant.

J'ai ce code:

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

class B extends A {

}

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

Sortie: C

Ce que je veux obtenir dans foo () est le nom de la classe de B. Comment puis-je faire cela sans changements dans la classe B?

Cordialement, Jan Oliver

PS:. __ __ CLASSE, get_class () ne fonctionnent pas

Était-ce utile?

La solution

Avant PHP 5.3, cela est impossible sans hacks et est connu comme la liaison tardive statique, un terme googleable.

Si vous êtes intéressé, voici l'article SO avec des réponses: Simuler Reliure statique avant la fin php 5.3

Autres conseils

Je pense que vous pouvez utiliser le intégré classe de réflexion pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top