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. 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