¿Qué es un interface en PHP?

Cuando definimos una clase o un método que acepta parámetros queremos evitar que nos «cuelen» datos no válidos.

Para esto tenemos los tipos de datos: int, string, array, bool, etc:

public function metodo(int $numero)

También podemos indicar que el parámetro sea un objeto de una clase concreta:

public function metodo(UnaClase $unObjeto)

Pero ¿y si queremos permitir solo objetos que cumplan una serie de condiciones?

Por ejemplo, queremos aceptar objetos que tengan definido un método que se llame calcular(). Imagina que metodo() llame a una función calcular() del objeto que le hemos pasado.

Si sabemos que ese método lo tienen las clases UnaClase y OtraClase podríamos empezar a hacer cosas como ésta:

public function metodo(UnaClase | OtraClase $unObjeto)

Y cada vez que creemos una clase que pueda ser un parámetro válido tenemos que modificar nuestro método.

¿Y si creamos nuestra clase para que la use otra gente? ¿Cómo podemos decirles «oye, a mi clase pásale solo objetos que tengan definido el método calcular()»?

Ahí es donde entran en juego los interfaces:

interface MiInterfaz {
    public function calcular();
}

Y crearíamos nuestro método así:

public function metodo(MiInterfaz $unObjeto)

Aquí ya solo podrían pasarnos objetos que cumplan con el interfaz MiInterfaz:

class MiClase implements MiInterfaz {
    ...
}

Los interfaces tienen más misterio pero esta es la idea fundamental.


¿Sabes lo que es el reto de PHP?

He creado el PHP Journey, una plataforma para que recibas de forma gratuita un email cada día con una pequeña perla de sabiduría de PHP y una pregunta que deberás responder.

Cada día pones a prueba tus conocimientos y aprendes algo nuevo.

Apúntate aquí:

https://urlantools.urlanheat.com/newsletter/php-journey/subscribe


Deja un comentario