Como saben aquellos que me conocen en el ambito de la programación, adoro los Objetos. Seguramente sea debido a que mi primer lenguaje de programación fue Java, o a que es mucho mas sencillo la forma de pensar de la POO que de la programacion estructurada.
Bien, el caso, esque desde que php incorporó los objetos a sus recursos, y yo me he visto obligado a programar en este lenguaje, intento hacerlo todo con objetos.
Ahora yendo al grando, si trabajamos con sesiones, quizas nos interese mas pasar como variable de sesion un objeto, que todos los atributos de este en diferentes variables de sesion.
Si hacemos lo siguiente:
$obj=new Object();
$_SESSION['o']=$obj;
Y luego a la hora de recuperarlo, por ejemplo imprimiendo (suponiendo que tenga implementado el metodo __toString()):
$obj=$_SESSION['o'];
echo $obj;
Esto nos lanzara un warning del tipo:
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] =>
Bien, para ahorrarnos esto, y hacernos mas facil la vida, tendremos que usar las funciones serializa(),unserializa(). Los que vengamos de Java, sabremos que a la hora de guardar en un fichero o enviar mediante flujos un objeto, hay que serializarlo (convertirlo a una cadena de bytes representativa del objeto en cuestion),y puesto que las variables de sesion, normalmente van guardadas en cookies o se pasan por cabeceras de html, es necesario serializar los objetos antes de pasarlos a otra pagina. Se haria de la siguiente forma:
// Para serializar y pasarla a la variable de session
$obj=new Object();
$_SESSION['o']=serialize($obj);
// Para deserializar y poderusar el objeto
$obj=unserialize($_SESSION['o']);
echo $obj;
De esta forma, podremos usar objetos a traves de sesiones. Como ultimo apunte, es necesario incluir la definicion de clase en los ficheros donde se vaya a serializar y deserializar.
viernes, 30 de noviembre de 2007
Pasar objetos a traves de sesiones en PHP
Suscribirse a:
Enviar comentarios (Atom)
3 comentarios:
te amo! :D
Andaba googleando buscando una solución para pasar objetos con php y esta me ha sido de mucha ayuda. Gracias
Muy útil esta información, de verdad muchas gracias
Publicar un comentario