"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo recuperar el nombre de clase de una llamada de método estático en clases de PHP extendidas?

¿Cómo recuperar el nombre de clase de una llamada de método estático en clases de PHP extendidas?

Publicado el 2025-03-22
Navegar:405

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

recuperando el nombre de clase de la llamada estática en la clase PHP extendida

en el mundo de PHP, a menudo es necesario determinar el nombre de clase a partir de una llamada estática, especialmente cuando se trabaja con clases extendidas. Considere el siguiente escenario:

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

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

en esta situación, llamando a myAction :: n (); Debería devolver "myaction" como el nombre de clase. Sin embargo, la variable __class__ solo devuelve el nombre de la clase principal ("Acción").

ANDATES ESTÁTICOS TARDOS (PHP 5.3):

PHP 5.3 introdujo enlaces estáticos tardíos, que permiten resolver la clase de destino en el tiempo de ejecución. Esta característica permite determinar la clase llamada usando la función get_called_class ():

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

class MyAction extends Action {

}

echo MyAction::n(); // Output: MyAction

enfoque alternativo (pre-php 5.3):

antes de php 5.3, una solución alternativa se basa en usar un método no estático y la función get_class ():

class Action {
    public function n(){
        return get_class($this);
    }
}

class MyAction extends Action {

}

$foo = new MyAction;

echo $foo->n(); // Output: MyAction
Recuerde, este enfoque solo funciona para métodos no estáticos, ya que la función get_class () toma una instancia de la clase como argumento.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3