48-interfaces en php




¿Qué son las interfaces?

En PHP, una **interfaz** permite definir un conjunto de métodos que una clase debe implementar. Las interfaces facilitan el uso de múltiples clases de manera uniforme, promoviendo el **polimorfismo**.

Sintaxis de una interfaz

<?php
interface InterfaceName {
    public function someMethod1();
    public function someMethod2($name, $color);
    public function someMethod3() : string;
}
?>

Interfaces vs. Clases abstractas

Aunque las interfaces y las clases abstractas son similares, hay algunas diferencias clave:

  • Las interfaces **no pueden tener propiedades**, mientras que las clases abstractas sí.
  • Todos los métodos en una interfaz son **públicos** y no pueden ser protegidos ni privados.
  • Los métodos en una interfaz son **siempre abstractos**, por lo que no requieren la palabra clave abstract.
  • Una clase puede **implementar múltiples interfaces** mientras **hereda de una sola clase**.

Uso de Interfaces

Para implementar una interfaz, una clase debe usar la palabra clave **implements** e implementar todos los métodos de la interfaz.

Ejemplo 1: Implementando una interfaz en una clase

<?php
interface Animal {
    public function makeSound();
}

class Cat implements Animal {
    public function makeSound() {
        echo "Meow";
    }
}

$animal = new Cat();
$animal->makeSound();
?>

Salida esperada:

Meow

Ejemplo 2: Implementando la misma interfaz en múltiples clases

<?php
// Definición de la interfaz
interface Animal {
    public function makeSound();
}

// Definición de clases que implementan la interfaz
class Cat implements Animal {
    public function makeSound() {
        echo "Meow ";
    }
}

class Dog implements Animal {
    public function makeSound() {
        echo "Bark ";
    }
}

class Mouse implements Animal {
    public function makeSound() {
        echo "Squeak ";
    }
}

// Crear una lista de objetos de diferentes clases
$cat = new Cat();
$dog = new Dog();
$mouse = new Mouse();
$animals = array($cat, $dog, $mouse);

// Recorrer la lista y hacer que cada animal emita un sonido
foreach($animals as $animal) {
    $animal->makeSound();
}
?>

Salida esperada:

Meow Bark Squeak

Publicar un comentario

0 Comentarios