PHP: Obtenha o nome de uma classe de herdamento em um método estático
-
21-09-2019 - |
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.
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