La función forward_static_call
en PHP permite llamar de forma estática a un método, incluso si el nombre del método se determina en tiempo de ejecución. Esta función es especialmente útil en contextos de herencia, cuando se desea llamar a un método estático de la clase actual desde una clase secundaria, asegurando que la llamada se realice correctamente desde el contexto de la clase en ejecución.
forward_static_call
y cómo funciona?
forward_static_call
permite hacer una llamada a un método estático, ideal cuando se usa herencia y se quiere invocar un método estático de la clase actual sin especificar directamente el nombre de la clase. En esencia, asegura que la llamada respete el contexto de herencia en el que se realiza.
forward_static_call
forward_static_call(callable $function, mixed ...$parameters): mixed
static
) y el nombre del método.
Nota: Para llamar al método de la clase padre, se recomienda utilizar forward_static_call_array
si tienes un conjunto de parámetros en forma de array.
forward_static_call
En este ejemplo, una clase hija llama al método estático getNombreClase
de la clase padre usando forward_static_call
.
class Padre {
public static function getNombreClase() {
return static::class;
}
public static function llamarMetodo() {
return forward_static_call([static::class, 'getNombreClase']);
}
}
class Hija extends Padre {}
echo Hija::llamarMetodo(); // Salida: Hija
Aquí, forward_static_call
permite que Hija::llamarMetodo()
llame a getNombreClase
desde el contexto de Hija
, no de Padre
.
En este ejemplo, un método estático acepta parámetros y los maneja a través de forward_static_call
.
class Calculadora {
public static function suma($a, $b) {
return $a + $b;
}
public static function llamadaSuma($a, $b) {
return forward_static_call([static::class, 'suma'], $a, $b);
}
}
echo Calculadora::llamadaSuma(5, 3); // Salida: 8
Aquí, forward_static_call
asegura que se llame al método correcto a lo largo de una cadena de herencia de múltiples clases.
class Animal {
public static function tipo() {
return "Animal";
}
public static function obtenerTipo() {
return forward_static_call([static::class, 'tipo']);
}
}
class Perro extends Animal {
public static function tipo() {
return "Perro";
}
}
echo Perro::obtenerTipo(); // Salida: Perro
Para más información sobre forward_static_call
, consulta la documentación oficial de PHP.
Jorge García
Fullstack developer