viernes, 29 de abril de 2011

Mas sobre Interfaces en PHP


Bien hoy veremos un segundo ejemplo utilizando interfaces agregado a lo que hemos visto en los post anteriores.

EL ejemplo se trata de como manejar objetos genericamente ya que sabemos que una clase puede implementar una interface y no tenemos que preocuparnos por los elementos internos o lo que hace esa clase solo con saber que interfaz implementa nos da una informacion especifica de que es lo que hace.

Lo que tratare de explicar es que nos podemos ahorrar mucho codigo pensando bien las cosas y usando las herramientas que nos da la POO en php , en si el ejemplo se basa en una situacion en que subiremos documentos a nuestro servidor , los documentos los subira cualquier departamento de X empresa , todos los documentos tienen las misma propiedades entre si lo unico que cambia es el nombre y la categoria y otras cosas mas .

Lo primero que debemos de hacer es una interfaz que declare los metodos a usar.

Interfaz
Clase Departamento 1

Esta clase implementa los metodos setter y getter con propiedades privadas , estos metodos nos sirven para accesar a esas propiedades privadas.

Clase de procesos
Esta clase nos ayudara a capturar el objeto , ojo un objeto que implemente la interfaz que acabamos de aplicarle a nuestro departamento 1 , esto se llama type hinting que hace que nosotros especifiquemos cualquier objeto que implemente esa interfaz si importar el nombre u otras cosas y asi poder usar los metodos que tiene esa clase.

Por otro lado tenemos un metodo privado al cual le pasamos el objeto generico para que imprima los resultados viendo asi la encapsulacion del metodo que solo puede ser visible en esa clase .

Bien para que nos sirve esto para que a la hora de seguir expandiendo nuestro codigo osea a la hora de crear el departamento 2 no escribamos tanto codigo como vemos en la siguiente imagen.

Solo heredamos de la clase departamento 1 e implementamos la interfaz ya que si no hacemos eso la funcion hecha arriba no capturada el objeto ya que no posee esa interfaz ahi aplicamos que no necesitamos saber datos internos de nuestra clase basta solo que interfaz implementa.

La clase principal quedaria asi :

Instanciamos las dos clases y luego llenamos el objeto para identificar cual es y veremos los resultados :

Bien si probamos el codigo veremos que tenemos un metodo generico que recibe cualquier objeto que implemente la interfaz , eso nos ayuda a ponerle mas logica a la aplicacion al usar orientacion a objetos .

Bien no siempre lo generico es bueno asi que tendremos que identificar en nuestra aplicacion cuales serian los metodos genericos para ahorrarnos trabajo y tiempo el cual lo ocuparemos en otras cuestiones.

Descargar

Comenten no sean Bayuncos .

1 comentario:

  1. Hermano, muchas gracias por el tutorial. Es un ejemplo maravilloso donde se percibe con claridad el polimorfismo y el encapsulamiento, sin dejar de lado la alta cohesion que tienen los objetos

    ResponderEliminar