Interfaces en PHP

Interfaces en PHP

¡Hola, bienvenidos y bienvenidas al curso de PHP 8! Continuando con el curso, hoy veremos qué son las interfaces en PHP 8.

¡Empecemos!

¿Qué son las interfaces en PHP?

Las interfaces son una característica que permite definir un conjunto de métodos sin implementación concreta. Las interfaces actúan como contratos que especifican qué métodos deben ser implementados por las clases que las adopten. Esto promueve el polimorfismo y la abstracción, permitiendo que diferentes clases puedan compartir una interfaz común aunque tengan implementaciones distintas.

La sintaxis para definir una interfaz es la siguiente:

interface MiInterfaz {
    public function metodo1();
    public function metodo2($parametro);

    // Otros métodos de la interfaz...
}

Ejemplo de una interface

Veamos algunos ejemplos. En primer lugar, vamos a crear el archivo interfaces.php en la ruta de nuestro proyecto.

Las interfaces se definen de la misma manera que una clase, pero con la palabra reservada “interface” y los métodos que tendrá sin definir su contenido. Vamos a crear la interfaz “Vehículo” que tendrá dos métodos obtenerTipo y CantidadRuedas.

interface Vehiculo {
    public function obtenerTipo();
    public function cantidadRuedas();
}

Seguidamente, vamos a crear la clase Motocicleta que va implementar la interfaz Vehículo por lo que los métodos definidos en la interfaz deben implementarse también en la clase.

class Motocicleta implements vehiculo {
    public function obtenerTipo() {
        return "Scooter";
    }

    public function cantidadRuedas() {
        return 2;
    }
}

Las clases aparte de los métodos implementados por la interfaz pueden tener sus propios métodos propios de la clase. Por ejemplo, vamos a crear un  método obtenerModelo.

public function obtenerModelo(){
    return "AM 2020";
}

La declaración de objetos es la misma, vamos a crear un objeto que va ser una nueva instancia de la clase Motocicleta.

$scooter = new Motocicleta();
echo "tipo: " . $scooter->obtenerTipo();
echo "Ruedas: " . $scooter->cantidadRuedas();
echo "Modelo:" . $scooter->obtenerModelo();

En el navegador podemos observar los resultados obtenidos.

Interfaces múltiples

Las interfaces también aceptan herencia múltiple, esto quiere decir que una interfaz puede heredar sus métodos de más una interfaz, veamos un ejemplo. En primer lugar, vamos a crear dos interfaces A y B.

interface A {
    public function metodo1();
}

interface B {
    public function metodo2();
}

Seguidamente, vamos a crear una tercera interfaz C que en este caso va a extender de la interfaz A y B.

interface C extends A, B {
    public function metodo3();
}

Por último, vamos a crear una clase  “MiClase” que va a implementar la interfaz C, como la interfaz C extiende de A y B la clase creada debe implementar los métodos de todos estas interfaces.

class MiClase implements C {
    public function metodo1() {
        // TODO: Implement metodo1() method.
    }

    public function metodo2() {
        // TODO: Implement metodo2() method.
    }

    public function metodo3() {
        // TODO: Implement metodo3() method.
    }
}

Es importante tener en cuenta que los métodos en una interfaz deben ser públicos, ya que las interfaces solo definen la interfaz pública que las clases deben cumplir. Las interfaces establecen una estructura común en clases no relacionadas directamente, lo que facilita la organización del código y la creación de aplicaciones más flexibles y mantenibles.

Ejercicios de la clase

1.- Crear una interfaz “Reproductor” con métodos abstractos reproducir(), pausar() y detener(). Luego, implementar las clases ReproductorAudio y ReproductorVideo que implementen la interfaz.

Hasta aquí el tutorial de hoy interfaces en PHP 8, puedes descargarte el código fuente de este ejemplo y todos los demás en el repositorio de GitHub, si quieres saber como subir tu proyecto a GitHub aquí te dejo un tutorial donde te indico paso a paso a subir tu proyecto a GitHub.

Si tienes alguna consulta puedes dejarnos un comentario. En el próximo tutorial veremos lo que son los namespace 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 *