Volver a la página principal
lunes 4 noviembre 2024
3

Cómo usar forward_static_call en PHP

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.

¿Qué es 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.

Sintaxis de forward_static_call

forward_static_call(callable $function, mixed ...$parameters): mixed
  • $function: Especifica la función o método a llamar. Generalmente se pasa como un array con el nombre de la clase (static) y el nombre del método.
  • $parameters (opcional): Lista de parámetros que se pasarán al método estático.
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.

Ejemplos de uso de forward_static_call

Ejemplo 1: Llamar a un método estático en una clase hija

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.

Ejemplo 2: Uso con parámetros

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

Ejemplo 3: Llamar a métodos estáticos en una cadena de herencia

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

Referencia

Para más información sobre forward_static_call, consulta la documentación oficial de PHP.

Etiquetas:
php
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer