Persistiendo datos en PHP5

Persistiendo datos en PHP5

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