Una interfaz es una "firma", sirve para definir que cierto objeto que la implemente lo va funcionar, esto cuando desarrollas en entre muchas personas sirve bastante, por ejemplo:
Código php:
Ver originalinterface Encendible {
public function enciende();
}
Cuando tu tienes por ejemplo un objeto que "enciende" objetos, tienes que de cierta forma garantizar que los objetos que le pases sean encendibles:
Código php:
Ver originalpublic function enciende( Encendible $objeto ) {
$objeto->enciende();
}
Al tu especificar una interfaz le puedes decir a los demas desarrolladores, para que tu código funcione con mi sistema, tienes que implementar la interfaz, así los demas desarrolladores lo implementan:
Desarrollador1:
Código php:
Ver originalclass cerillo implements Encendible {
public function enciende() {
echo "Cerillo encendido!";
}
}
Desarrollador 2:
Código php:
Ver originalclass foco implements Encendible {
public function enciende() {
echo "Foco encendido!";
}
}
Entonces los dos desarrolladores al implementar su código y pasarlo por tu clase, al llegar al método enciende() van a funcionar como deben.
Espero con esto entiendas la utilidad, es mayor todavía, por ejemplo yo en mi componente DataGrid, puedo mostrar una grilla desde un DataSource, este DataSource es una interfaz, que si tu la implementas puedes usar mi DataGrid con tu fuente de datos que quieras (ya sea una BDD, un XML, un HTML, etc.) Al usar la interfaz puedes usar el Grid y no te preocupas por como funciona el Grid, solamente te enfocas en la parte de implementar la fuente de datos.
Saludos