Pergunta

Ok, o título do post pode ser um pouco confuso.

Eu tenho este código:

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

class B extends A {

}

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

Saída: c

O que eu quero obter em Foo () é o nome da classe B. Como posso fazer isso sem alterações na classe B?

Atenciosamente, Jan Oliver

PS: __ classe __, get_class () não está funcionando.

Foi útil?

Solução

Antes do PHP 5.3, isso não é possível sem hacks e é conhecido como ligação estática tardia, um termo googleable.

Se você estiver interessado, aqui está o artigo SO com respostas: Faking tardio estático de ligação antes do Php 5.3

Outras dicas

Eu acho que você poderia usar o embutido Classe de reflexão por isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top