"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como recuperar o nome da classe de uma chamada de método estática nas classes prolongadas do PHP?

Como recuperar o nome da classe de uma chamada de método estática nas classes prolongadas do PHP?

Postado em 2025-03-22
Navegar:773

How to retrieve the class name from a static method call in extended PHP classes?

Recuperando o nome da classe da chamada estática na classe PHP estendida

no mundo das PHP, é geralmente necessário determinar o nome da classe a partir de uma chamada de função estática, especialmente ao trabalhar com as classes extensas. Considere o seguinte cenário:

class Action {
    function n() {/* some implementation */}
}

class MyAction extends Action {/* further implementation */}

nessa situação, chamando myaction :: n (); deve retornar "myaction" como o nome da classe. No entanto, a variável __class__ retorna apenas o nome da classe pai ("ação"). Esse recurso possibilita determinar a classe chamada usando a função get_called_class ():

classe ação { função estática pública n () { return get_called_class (); } } classe MyAction estende a ação { } eco myaction :: n (); // output: myaction

abordagem alternativa (pré-php 5.3):

class Action {
    public static function n() {
        return get_called_class();
    }
}

class MyAction extends Action {

}

echo MyAction::n(); // Output: MyAction
função pública n () { retornar get_class ($ this); } } classe MyAction estende a ação { } $ foo = new myaction; echo $ foo-> n (); // output: myaction

lembre-se, essa abordagem funciona apenas para métodos não estáticos, pois a função get_class () leva uma instância da classe como um argumento.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3