13 de febrero de 2009

Objetos de atributos dinámicos

Me encuentro ahora mismo en medio de un proyecto importante y muy interesante, desarrollando una aplicación algo compleja.
La "complejidad" radica en que desconozco absolutamente los campos de los formularios que han de llenarse con lo que. Tengo que recuperarlos de una BBDD según una ID, crear el formulario, hacer el control del formulario y luego guardarlo en una tabla con el ID inicial, el ID de cada campo y la información.

Lo estamos realizando con POO en PHP5 y con el framework Codeigniter. A pesar de que Codeigniter tiene compatibilidad con PHP4 y por tanto no es full OO, se pueden utilizar la mayoría de las opciones de PHP5.

Para ello cree una clase Lbase desde la cual heredarían todas las demás con los dos o tres métodos que utilizaran todos mis objetos. Cuales son? Pues son los métodos get y set para los atributos ya que estos son totalmente configurables por los usuarios de la aplicación. Quiere decir que yo tengo que recuperar los atributos de mi objeto desde una bbdd y no se cuales serán.

Lo hice de la siguiente manera (no son las mismas variables, sino unas más descriptivas):



De esta forma generamos atributos dinámicamente. Eso sí perdemos el encapsulamiento ya que, de momento, no he encontrado forma de asignarles la propiedad "protected" o "private" a cada uno de ellos.

Así es como resolví el tema de los atributos dinámicos para le método get. Para el set es algo parecido:



Como ven no es tan complicado una vez se sabe.

Espero que si ven algo mejorable o tienen alguna otra idea me lo hagan saber, estaré encantado.

No hay comentarios.: