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
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.