Vaya al Contenido

PHP Interfaces - SuperHispano

Saltar menú
SuperHispano
+34 012 345 678
info@example.com
España 03:19:18 sábado 07/02/26
Saltar menú
Saltar menú
Saltar menú
Taller > PHP > Program. Objetos

Interfaces en PHP


En la Programación Orientada a Objetos (OOP) en PHP, las interfaces son una herramienta fundamental que permite especificar qué métodos deben ser implementados por una clase. Las interfaces ayudan a definir un contrato que las clases deben seguir, sin definir cómo deben hacerlo.

¿Qué es una Interfaz en PHP?


Una interfaz es similar a una clase abstracta, pero con algunas diferencias clave. Las interfaces definen un conjunto de métodos que una clase debe implementar, pero no proporcionan una implementación de estos métodos. Esto permite que diferentes clases implementen los mismos métodos de manera diferente, lo que promueve el polimorfismo.

Características principales de las interfaces:


No pueden tener propiedades.
Todos los métodos deben ser públicos.
Todos los métodos son abstractos, lo que significa que no contienen una implementación.
Una clase puede implementar varias interfaces al mismo tiempo.

Ejemplo básico de una interfaz en PHP


Aquí tienes un ejemplo de cómo definir una interfaz y cómo una clase puede implementarla:

<?php
interface Vehiculo {
public function arrancar();
public function detener();
}

class Coche implements Vehiculo {
public function arrancar() {
echo "El coche ha arrancado.\n";
}

public function detener() {
echo "El coche se ha detenido.\n";
}
}

// Crear un objeto de la clase Coche
$coche = new Coche();
$coche->arrancar();
$coche->detener();
?>


Explicación del código


Interfaz Vehiculo: Define dos métodos (arrancar y detener) que deben ser implementados por cualquier clase que implemente esta interfaz.
Clase Coche: Implementa la interfaz Vehiculo y proporciona una implementación para los métodos definidos en la interfaz.
Objeto $coche: Se crea una instancia de la clase Coche y se llaman los métodos arrancar y detener.

Interfaces vs. Clases Abstractas en PHP


Aunque las interfaces y las clases abstractas comparten algunas similitudes, tienen diferencias clave que debes tener en cuenta:

Interfaces
Característica Interfaz Clase Abstracta
Propiedades No puede tener propiedades Puede tener propiedades
Métodos Todos los métodos son públicos y abstractos Puede tener métodos públicos, protegidos y abstractos
Implementación de métodos No contiene ninguna implementación de métodos Puede tener métodos implementados
Herencia múltiple Las clases pueden implementar varias interfaces Solo puede heredar de una clase abstracta

Ejemplo de una clase abstracta para comparación:


<?php
abstract class Dispositivo {
protected $estado;

public function encender() {
$this->estado = "encendido";
echo "El dispositivo está encendido.\n";
}

// Método abstracto que debe ser implementado por las subclases
abstract public function apagar();
}

class Televisor extends Dispositivo {
public function apagar() {
$this->estado = "apagado";
echo "El televisor está apagado.\n";
}
}

// Crear una instancia de Televisor
$tv = new Televisor();
$tv->encender();
$tv->apagar();
?>


Explicación del código


Clase abstracta Dispositivo: Tiene un método implementado (encender) y un método abstracto (apagar) que debe ser implementado por las subclases.
Clase Televisor: Implementa el método abstracto apagar y utiliza el método encender proporcionado por la clase abstracta.

Polimorfismo usando Interfaces en PHP


El polimorfismo permite que un mismo método pueda ser utilizado por diferentes clases, implementándolo de maneras diferentes. Las interfaces son una herramienta ideal para lograr esto.

Ejemplo: Usando polimorfismo con interfaces


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

class Avion implements Volador {
public function volar() {
echo "El avión está volando a gran altura.\n";
}
}

class Pájaro implements Volador {
public function volar() {
echo "El pájaro está volando en el cielo.\n";
}
}

// Crear una lista de objetos que implementan la interfaz Volador
$avion = new Avion();
$pajaro = new Pájaro();

$voladores = array($avion, $pajaro);

// Decirles a los objetos que vuelen
foreach ($voladores as $volador) {
$volador->volar();
}
?>


Explicación del código


Interfaz Volador: Define un método volar que debe ser implementado por todas las clases que la implementen.
Clases Avion y Pájaro: Ambas clases implementan el método volar de manera diferente, pero ambas siguen el contrato definido por la interfaz Volador.
Polimorfismo: Al recorrer la lista de objetos, se invoca el método volar() de cada uno, sin importar el tipo de objeto, lo que demuestra el concepto de polimorfismo.

Implementación de múltiples interfaces en PHP


Una clase en PHP puede implementar múltiples interfaces. Esto es útil cuando se desea que una clase cumpla con diferentes contratos al mismo tiempo.

Ejemplo: Clase que implementa múltiples interfaces


<?php
interface Vehiculo {
public function conducir();
}

interface Mantenimiento {
public function reparar();
}

class Coche implements Vehiculo, Mantenimiento {
public function conducir() {
echo "El coche está en movimiento.\n";
}

public function reparar() {
echo "El coche está en el taller para reparaciones.\n";
}
}

$coche = new Coche();
$coche->conducir();
$coche->reparar();
?>


Explicación del código


Clase Coche: Implementa tanto la interfaz Vehiculo como la interfaz Mantenimiento, proporcionando una implementación para los métodos de ambas.
Esto permite que la clase Coche cumpla con múltiples contratos, lo que es útil en escenarios donde un objeto debe realizar diferentes tareas que involucran diferentes interfaces.

Conclusión


Las interfaces en PHP son una herramienta poderosa que permite definir un contrato que las clases deben seguir, sin especificar cómo deben implementar los métodos. Esto promueve el polimorfismo y la reutilización del código.
A diferencia de las clases abstractas, las interfaces no pueden tener propiedades y todos sus métodos deben ser públicos y abstractos.
+34 012 345 678
+34 012 345 678 (fax)
example@superhispano.com
Creado con WebSite X5
Regreso al contenido
Icono de la aplicación
SuperHispano Instale esta aplicación en su pantalla de inicio para una mejor experiencia
Toque Botón de instalación en iOS y luego "Agregar a su pantalla"