Clase para redimensionar imagenes en php
December 16th, 2009
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.
Usando plantillas en php (implementacion basica)
November 20th, 2009
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.
Contaminacion de variables
November 20th, 2009
La contaminacion de variables o como se le conoce en ingles pollution, es un problema que se presenta en php cuando se tienen enormes bloques de codigo, el problema consiste en que durante la ejecucion del script algunas de mis variables pueden contaminarse es decir cambiar sus valores o inclusive el tipo sin que yo me de cuenta, esto es porque php no exige una declaracion de los tipos de las variables, tampoco hay restricciones en cuanto al tipo que le puedo asignar a la variables, y cuando el codigo es realmente inmeso y existe una gran catidad de variables existe el de que alguna variable importante pierda su valor.
Lo anterior puede derivar en un debugeo del script que exija demasiado tiempo, o tal vez un problema mas grave como un fallo critico en la aplicacion que se este desarrollando y pase desapercibo durante la fase de pruebas.
Actualmente php no implemente el Type Hinting como tal para evitar este problema. Es por eso que php no se considera aun como un lenguaje aceptable para desarrollar software incluso aunque en este momento haya aplicaciones bien escritas como lo es wordpress y muchos otros sistemas de foros que hay en la internet.
Validacion de formularios en php usando objetos
November 16th, 2009
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.
¿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 } } |
Mi primer programa en php
November 14th, 2009
Antes de iniciar pongamos algunas reglas sobre la mesa.
Para escribir php es necesario un editor de texto, puedes usar cualquiera hasta el bloc de notas de windows, yo en lo personal utilizo homeSite porque te pone las intrucciones de colores, pero tu puedes usar el que te venga en gana
Todo el codigo php que escribas debe de ir DENTRO DE LAS ETIQUETAS < ? ?>; de la siguiente forma:
1 2 3 | < ? todo mi codigo php que escriba... ?> |
Todas las instrucciones en php deben de terminar con un punto y coma
Arboles binarios de busqueda en php usando objetos
November 7th, 2009
ahora tomaremos el tema de los arboles binarios de busqueda, no abarcaremos la teoria alrededor de los arboles, hablare sobre su implementacion en php usando objetos.
Sera solo un boceto y la idea es mostrar u orientar al lector sobre el uso de esta estructura en un lenguaje como php.
Haremos uso de dos clases: la clase nodo y la clase arbol, la clase nodo servira para definir la estructura de los nodos del arbol, en la clase arbol se implementaran los metodos basicos para trabajar con un arbol binario de busqueda, se abreviara arbol binario de busqueda como ABB.
Sabemos que en un arbol binario cada uno de los nodos del arbol tiene 2 hijos, de ahi viene la palabra binario, entonces la clase nodo tendra 2 campos el hijo izquierdo y el hijo derecho, ambos campos seran referencias a otro objetos del mismo tipo nodo, ya que en php no se tiene apuntadores como en el lenguaje C, entonces los apuntadores a direcciones de memoria ahora los cambiaremos por variables que guardan objetos.
La clase nodo contara con un tercer campo llamdo info, que almacenara el valor del nodo, en este ejemplo trataremos al campo info como un entero, pero para una implementacion mas robusta de un arbol, el campo info puede ser cualquier otra cosa, un float, un array, un objeto o inclusive otro arbol.
listas enlazadas en php usando poo (2)
November 2nd, 2009
En la primera parte de este tutorial revisamos aspectos basicos de las listas, en caso de que no hubieras trabajado con listas antes. Si quieres revisar la teoria (muy general) sobre listas dale click aqui
Implementar una lista enlazada en php
Como ya sabemos una lista se compone de nodos, hay un nodo especial que indica el inicio de la lista, y uno de los nodos de la lista en su campo enlace apunta al vacio esto indica el final de la lista, en php representaremos el vacio por la constante NULL, los nodos y la lista seran objetos
listas enlazadas en php usando poo (1)
November 2nd, 2009
En este documento abarcaremos la creacion de listas enlazadas utilizando programacion orientada a objetos, un ejercicio tipico en la programacion en c ahora emulado en php, revisaremos la teoria alrededor de las su aplicacion en php.
El Documento se divide en 2 partes teoria y aplicacion. En esta primera parte se habla sobre la teoria si quieres ir a la segunda parte y ver la implementacion de las listas en php dale click aqui
Teoria de las listas enlazadas simples
Solo quiero aclarar que el objetivo de este documento es principalmente poner en practica la oop(object oriented programing) en php, Seguramente haya mil formas mas de implementar listas, mas eficientes y elegantes, por ahora el proposito es solo practica.
Aquellas personas que hayan programado en c seguramente ya sabran de que van las listas enlazadas y no es necesario que leas esto.