bueno, he hecho una clase que sirve para redimensionar imagenes, es necesario tener instalada la libreria gd del php, he tratado de que se lo mas general posible, la clase tiene dos metodos utilizables que son
resizeImg() sirve para hacer un resize a un solo archivo de imagen y el otro resizeDir() que sirve que hacer resize a todas las imagenes contenidas en un directorio.

La verdad es que me ha sido muy util, sobre todo porque algunas veces es necesario sacar miniaturas de las imagenes de un directorio el problema es que a veces pueden ser cientos de imagenes y cambiarles el tamaño a mano es una tarea pesado, pero con esta clase solo es necesario pasarle algunos parametro ejecutar el script y listo.

La clase tiene un metodo que verifica los parametros pasados a los metodos, si existe algun error con alguno de los parametros se genera una exepcion mostrando un mensaje describiendo el error y se termina la ejecucion del metodo sin tirar warnings ni errores fatales.

Read the rest of this entry »

Pues ahora quiero escribir sobre un objeto que me ha resultado muy util en algunas de las cosas que he echo y de paso esplicar el uso de algunas funciones del php, en concreto hablaremos de las siguientes funciones

1
2
3
extract()
Metodos magicos __set() y __get()
Bufer de salida ( ob_start, ob_get_contents, etc.. )

De lo que se trata esto de tener un objeto llamado plantilla al que le puedo asigar un archivo html (la plantilla) y una serie de variables para que se muestren en esa plantilla. Por cuestiones de usabilidad la plantilla se tratara de que el archivo html contenga solo pequeñas lineas de codigo en php para escupir las variables, pero esto no es una regla puesto que una variable podria tener la forma de un array y por lo tanto dentro de la plantilla necesitare un ciclo para poder desplegarla.

En ese sentido se puede ser flexible en cuanto a la cantidad de codigo php que pueda contener una plantilla, pero lo mas adecuado seria mantener la plantilla lo mas limpia posible de codigo php.

Read the rest of this entry »

Ahora vamos a hablar sobre el problema de validar formularios, seguramente ya habras hecho algun formulario en php y te haras dado cuenta que en ocaciones es necesario validar los datos que el usuario introduce, por ejemplo lo comun seria que un campo de texto de un formulario destinado a escribir un numero telefonico contega solamente numeros, una cierta cantidad de caracteres y tal vez podria contener guiones. Tal vez habras notado que puedes escribir toda clase de cosas en un formulario y enviar esos datos extraños a un script php para procesarlos, inclusive puedes enviar consultas sql o instrucciones de php, es ahi que por cuestiones de fiabilidad de los datos y seguridad del sistema es necesario la validacion de los datos, antes de cualquier otra accion como su procesamiento o almacenamiento en una base de datos.

Esta perfecto pensaras, lo unico que hay que hacer es validar los formularios y listo!!, resulta que surge otro problema, supon que en el lugar donde trabajas te han pedido validar los formularios del sitio de la empresa, lo que no te dijeron es que el sitio de la empresa tiene mas de 50 formularios y cada formulario tiene alrededor de entre 15 y 20 campos, validar lo anterior es una tarea enorme.

Y el enfoque para resolver este problema es la programacion orientada a objetos, lo cual me permitira reutilizar mucho del codigo que escriba y ahorrarme mucho tiempo.

La idea a de esto es crear una serie de clases que me sirvan para validar los distintos campos de un formulario, por ejemplo una clase para validar una campo telefonico, una clase para validar un campo descripcion, otra clase para validar un campo reservado para un nombre etc, y una clase especial que nos servira para manejar las demas clases.

La clase control sera capaz de darme la siguiente informacion:

  • Podra decir si se genero o no un error en el proceso de validacion.
  • Podra devolverme un error si es que lo hubo de un campo en especifico.
  • Podra devolverme todos los errores generados.

Luego vendran las clases correspondientes para validar los distintos campos, estas clases heredaran de una clase abstracta, el unico objetivo de esto es que todo objeto validador contenga un metodo validar impresindible para el proceso de validacion de formularios, y que tenga a disponibilidad una serie de metodos basicos para validar campos.

Read the rest of this entry »

¿Que es el polimorfismo?

November 16th, 2009

La etimologia de la palabra polimorfismo hace referencia a “muchas formas”, tal vez de a primera vista la palabra polimorfismo parezca ser un concepto dificil de enteder y tal vez hasta podria asustar a alguien, pero en realidad es un concepto sencillo. Pongamos un ejemplo para familiarizarnos mas con esta palabrota.

Tomemos a los humanos por ejemplo los humanos provenimos biologicamente de una jerarquia superior que son los mamiferos, los mamiferos duermen y nos han heredado la capacidad de dormir, asi que todos los humanos dormimos. Todos los humanos realizamos una accion comun que es dormir… pero existen humanos que duermen de diferentes formas, por ejemplo supongamos que tu duermes de lado, pero tu mama tambien duerme y tal vez duerme con la cara hacia arriba, otras personas duermen en posicion fetal, algunos duermen abrazando la almohada, en fin. La idea de esto es que todos los humanos dormimos pero lo hacemos de formas diferentes.

Lo mismo sucede con los objetos, es posible que la herencia y el polimorfismo sean la base de la programacion orientada a objetos. Veamos el siguiente inconveniente que surge al implementar un sistema de tienda virtual.

Supon que tienes una serie de objetos que represetan los articulos de la tienda, todos estos objetos deben de poder dar su descripcion por ejemplo nombre,precio..etc pero resulta que tienen caracteristicas diferentes y desplegar la descripcion para una television es diferente que para un paquete de frijoles o cualquier cosa que se te ocurra.

Una solucion podria ser la siguiente: meter todos los objetos articulo en un array, recorrer el array y escribir la descripcion del objeto segun la clase de la que provenga, utilizando una serie de if´s

1
2
3
4
5
6
7
8
9
10
11
12
13
//productos es un array que contiene a los articulos
for ( $i=0;$i<sizeof ($productos);$i++ ){
   if ( $productos[$i] instanceof television ){
 	//desplegar la descripcion de la tele
   }else if ( $productos[$i] instanceof frijoles ){
	//desplegar la descripcion para frijoles
	.
	.
	.
   }else if ( $productos[$i] instanceof claseN ){
	// hay tantos if´s como clases de productos tengas :S
   }
}

Read the rest of this entry »