PHP Altruistas Ocio en Las Palmas
/

Las interfaces en la Programación Orientada a Objetos en PHP

Se trata de una clase en el que solo se dan las especificaciones de los métodos, significa esto que no los implementa o desarrolla. Otra de las características es que no se definen atributos. Es lógico pensar que los métodos especificados en las interfaces van a estar definidos en otras clases. Veamos cómo configurarlo en PHP.

Sintaxis para definir una interface


interface nombre_interfaz {
   //especificación de los métodos
   [public] function método1();
   [public]function método2();
   ...
}

Los métodos de una interfaz son siempre públicos por lo tanto puede omitirse la palabra reservada ‘public’.

Llevar a cabo la implementación de una o más interfaces dentro de una clase se realiza a través de ‘implements’, de la siguiente forma.

<?php
class nombre_de_clase implements nombre_interfaz1, nombre_interfaz2, ... {
   // implementación de todos los métodos declarados en las interfaces
}?>

Esta clase tiene que implementar los métodos de las interfaces, pero si se deja alguno sin implementar esta clase debe declararse como abstracta. Es importante saber que la clase que lleva a cabo el desarrollo de los métodos de una interfaz debe utilizar las mismas identificaciones de los métodos puesto que, de lo contrario, estaríamos provocando un error fatal.

Observe este ejemplo:

Definición de tres interfaces


<?php
interface lectura {
   function get ();
}
interface escritura {
   function put ($valor);
}
interface envia_un_saludo {
   function un_saludo ($texto);
}?>

Definición de una clase que desarrolla las tres interfaces


<?php
class unaClase implements lectura, escritura, envia_un_saludo {
   //Definimos un atributo cualquiera
   private $atributo_cualquiera;
   //desarrollo del método del interface lectura
   public function get (){
      return $this->$atributo_cualquiera;
   }
   //desarrollo del método del interface escritura
   public function put ($valor){
      echo $this->$atributo_cualquiera=$valor;
   }
   //desarrollo del método del interface un_saludo
   public function un_saludo ($mensaje="Esperamos verte muy pronto") { 
     echo "Este es nuestro saludo de hoy: "."'<b>".$mensaje."</b>'";
   } 
}?>

Uso de la clase unaClase


<?php
    //uso de la clase
    $objeto = new unaClase (); //instanciación
    //escritura 
    $objeto->put(125); 
    //lectura 
    $objeto->get(); 
    //enviamos un saludo
    echo "<br><hr>"; //salto de línea + separación
    $objeto->un_saludo ("Hemos terminado el ejemplo, pase usted un buen día");
    echo "<br><hr>"; //salto de línea + separación
    //saludo por defecto
    $objeto->un_saludo();
?>

ejecución del código

En el ejemplo anterior se ha desarrollado declarando tres interfaces pero perfectamente se pudo haber llevado a cabo con una sola, de esta forma.

<?php
interface lect_escrit_saludo { 
   function get ();
   function put ($valor);
   function un_saludo ($texto);
}
class otraClase implements lect_escrit_saludo {
//Definimos un atributo cualquiera
   private $atributo_cualquiera;
//desarrollo del método lectura
   public function get (){
      return $this->$atributo_cualquiera;
   }
//desarrollo del método escritura
   public function put ($valor){
      echo $this->$atributo_cualquiera=$valor;
   }
//desarrollo del método un_saludo
public function un_saludo ($mensaje="Cada día me gusta más programar en PHP") { 
     echo "Este es nuestro saludo de hoy: "."'<b>".$mensaje."</b>'";
   } 
}
//uso de la clase 
   $otro_objeto = new otraClase (); //instanciación 
//escritura 
   $otro_objeto->put(125); 
//lectura 
   $otro_objeto->get(); 
//enviamos un saludo 
   echo "<br><hr>"; //salto de línea + separación 
   $otro_objeto->un_saludo ("Este es el segundo ejemplo, ¿en qué está pensando?"); 
   echo "<br><hr>"; //salto de línea + separación 
//saludo por defecto 
   $otro_objeto->un_saludo();
?>

ejecución del código

Deja una respuesta