August 31st, 2011 Category: php5 Programacion Zend Framework
No Comments »

Muchas veces necesitamos guardar una fecha en mysql, y recibimos una fecha con el formato dd/mm/yyyy, pero en Mysql es necesario guardarlo con el formato yyyy-mm-dd.

Esto no supone ningun inconveniente con Zend Framework, la verdad es que es bastante simple.

Lo primero que hacemos es recibir la fecha como viene, y crear una instancia de Zend_Date

$fechaInicial = "25/08/2016";

$fecha = new Zend_Date($fechaInicial, 'dd/mm/yyyy');

echo $fecha->get('yyyy-mm-dd');

Con el metodo get y pasando como parametro, el formato que necesitamos es todo lo que necesitamos para guardar ese valor con un formato de fecha valido en nuestra base de datos.

Seguir leyendo

August 31st, 2011 Category: php5 Programacion
No Comments »

Hasta ahora no necesite implementar funciones anonimas en ningun proyecto, pero estaba trabajando con archivos de texto, donde tenia que parsear el contenido y me encontre que el array que generaba con cada columna de una linea de archivo, venia con espacios al inicio y me complicaba las validaciones, asi que tenia que usar la funcion trim(), en cada elemento. Para hacerlo facil queria usar array_walk(), el problema es que no podia usar trim(), como nombre de funcion.

Asi que decidi usar closures, condenando el proyecto a solo correr en php 5.3, pero eso no iba a ser un problema (creo).

Para lo que no sepan lo que es un clousure, pueden leerlo en la pagina de PHP

El codigo es bastante simple y lo comparto a continuacion.

array_walk($prop, function(&$n) {
	$n = trim($n);
});

Como ven en el ejemplo la forma de implementarlo es realmente muy simple, tal como lo hacemos en javascripts.

Es importante que no abusen de estas funciones anonimas, porque pueden traer confusion cuando el sistema crezca un poco, pero es interesante aplicarlo en estos casos que son bastante simples, y necesarios.

Soy conciente de que tendria que tener listo el capitulo 4 del curso de Zend Framework, en un rato lo subo, a no desesperarce. :D

Seguir leyendo

October 27th, 2008 Category: php5
4 Comments »

Comparto esta funcion para generar claves aleatorias. Es facil de usar y de entender.

 {
        $consonants .= '@#$%';
    }

    $password = '';
    $alt = time() % 2;
    for ($i = 0; $i < $length; $i++) {
        if ($alt == 1) {
            $password .= $consonants[(rand() % strlen($consonants))];
            $alt = 0;
        } else {
            $password .= $vowels[(rand() % strlen($vowels))];
            $alt = 1;
        }
    }
    return $password;
}

?>
Seguir leyendo

July 17th, 2008 Category: php5 Programacion
Comments Off

Programacion Orientada a Objetos

Para los que quieran empezar en el mundo del POO, les recomiendo este libro.Explica con detalle los 3 paradigmas principales, herencia, encapsulamiento, y polimorfismo, dedicándole un capitulo teórico y otro practico a cada uno.

Además el libro tiene una introducción a UML, diseño orientado a objetos, testing de aplicaciones, Patrones, y la implementación en nuestros sistemas.

Los ejemplos del libro están realizados en Java, que según cuenta el autor es el lenguaje mas simple para explicar esta teoría. Y por suerte la sintaxis de Java es muy parecida a la de PHP en cuanto a POO, así que no creo que tengan problemas en entender los ejemplos del libro.

El libro lo pueden adquirir en cualquier librería grande. Yo lo compre en el Ateneo y lo pague entre 120 y 150 pesos argentinos.

Seguir leyendo

July 16th, 2008 Category: php5
10 Comments »

PHP tiene el problema que sus clases no son persistentes. La persistencia es uno de las caracteristicas del POO.

Para persistir un objeto en PHP tenemos que serializarlo, para poder usar las propiedades de un objeto tal cual quedo despues de su serializacion vamos a usar la funcion serialize para serializarlo,  y unserialize para restaurarlo. Tengan en cuenta que cuando serializamos un objeto no serializamos los metodos, sino los valores que adquirieron los atributos.

La idea de esto es simple, supongamos que tenemos un carrito de compras donde el usuario completa los articulos que se quiere comprar y serializamos el objetos con los articulos adquiridos. Este usuario por X motivo decide cerrar la web, y seguir navegando por otras paginas, o simplemente cerrar la conexion. Nuestra aplicacion deberia restaurar los items seleccionados por el usuario, una vez que este vuelva a loguearse en nuestro sistema. Si nosotros previamente guardamos los datos serializados, cuando el usuario se logue solo deberiamos deserializar el objeto y seguir operando con este objeto sin ningun problema.

Para ayudarnos en este trabajo tenemos dos metodos que podemos agregar a nuestra clase, __wakeup y __sleep. La primera se ejecuta cada vez que deserializamos y la otra cada vez que serializamos.

Ahora cada vez que ustedes necesiten persistir los datos que contiene un objeto, pueden serializarlo y guardar esa serializacion (es un string), en un archivo de texto, en una variable de sesion, o en la base de datos y poder pasar por diferentes instancias sin la necesidad de generar otra vez los valores para esa clase, o recurrir a la necesidad de guardar todos los parametros en una tabla.

Pesistencia de Objetos en la Wiki

Seguir leyendo