Polimorfismo en PHP

Polimorfismo en PHP

Hola. ¿Cómo están? Bienvenidos continuando con el curso de PHP, hoy veremos lo que es  polimorfismo en PHP 8. Así poco a poco ir conociendo más la programación orientada a objetos POO.

¡Empecemos!

¿Qué es el polimorfismo en PHP?

El polimorfismo es un concepto clave en la programación orientada a objetos (POO) que se refiere a la capacidad de diferentes clases de objetos para ser tratadas de manera uniforme a través de una interfaz común. Esto permite que objetos de diferentes clases puedan responder a una misma llamada de método o función de manera adecuada, según su propia implementación.

El polimorfismo se logra mediante el uso de interfaces y herencia. Cuando una clase implementa una interfaz o hereda de una clase base, se compromete a proporcionar una implementación de los métodos definidos en la interfaz o clase base. Sin embargo, cada clase hija puede tener una implementación diferente de esos métodos.

Ejemplo de polimorfismo en PHP

Ahora haremos algunos ejemplos. En primer lugar, vamos a crear el archivo polimorfismo.php en la ruta de nuestro proyecto. Para ir probando los ejemplos abrimos nuestro navegador, en la ruta localhost:8080/curso_php8/polimorfismo.php.

Polimorfismo mediante Herencia

Vamos a crear la clase padre “Animal” con un método “haceSonido”.

class Animal {
    public function hacerSonido() {
        // Implementación genérica de hacerSonido()
    }
}

Ahora creamos las clases hijas “Perro” y “Gato” respectivamente, estas van a heredar de la clase padre “Animal”.

class Perro extends Animal {
    public function hacerSonido() {
        echo "El perro dice: Guau Guau\n";
    }
}

class Gato extends Animal {
    public function hacerSonido() {
        echo "El gato dice: Miau Miau\n";
    }
}

La función hacerRuido() toma un objeto de tipo “Animal” como argumento y llama a su método hacerSonido(), sin importar si el objeto es de tipo Gato o de tipo Perro. Esto es polimorfismo en acción, ya que el código puede tratar a diferentes objetos como si fueran del mismo tipo a través de la interfaz común.

function hacerRuido(Animal $animal) {
    $animal->hacerSonido();
}

$miPerro = new Perro();
$miGato = new Gato();

hacerRuido($miPerro);
hacerRuido($miGato);

Polimorfismo mediante Interfaces

Veamos el mismo ejemplo ahora utilizando “Interfaces”.

interface Animal {
    public function hacerSonido();
}

class Perro implements Animal {
    public function hacerSonido() {
        echo "El perro dice: Guau Guau\n";
    }
}

class Gato implements Animal {
    public function hacerSonido() {
        echo "El gato dice: Miau Miau\n";
    }
}

function hacerRuido(Animal $animal) {
    $animal->hacerSonido();
}

$miPerro = new Perro();
$miGato = new Gato();

hacerRuido($miPerro);
hacerRuido($miGato);

En ambos casos, el polimorfismo se logra al utilizar una interfaz común, el código puede tratar a diferentes objetos como si fueran del mismo tipo a través de la interfaz o la herencia, permitiendo así un uso más flexible y extensible en la aplicación.

Ejercicios de la clase

1.- Utilizar polimorfismo para calcular el área de dos formas geométricas: un círculo y un rectángulo.

Todo el código fuente desarrollado en este curso estará disponible en GitHub para su descarga y aportación de la misma en: https://github.com/NorvicSoftware/curso_php_8

Hasta aquí la clase de hoy sobre polimorfismo en PHP 8, si tienes alguna consulta puedes dejarnos un comentario o si quieres saber más acerca de este tema puedes visitar el sitio oficial de PHP. En la próxima clase veremos lo que es encapsulamiento de objetos en PHP 8.

Saludos y éxitos.

Victor Peña

Victor Peña

Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *