Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/06/2003, 04:49
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Pensaba que PHP ya serializaba los objetos. Eso si, debes tener definida la clase antes de hacer el session_start() en el resto de paginas, aunque no la uses. Es decir, si el algun momento metes en la sesion un objeto de una clase, en todas las paginas que tengan un session_start() debes poner antes de esta el include("miclase.inc.php"); (la definicion de tu clase, ya sabes, el class miclase { ...). Porque si se te olvida en alguna y has metido la clase en la sesion, creo que lo que hace el session_start() es deserializar todas las variables de la sesion y si no encuentra la definicion de la clase se "desvinculara" de la clase, quedando solo las variables.

Eso si, como normalmente no trabajo con sesiones y clases, esto es lo que he deducido del manual. Por cierto, este comportamiento depende de la version de PHP. Revisa en el manual la seccion sobre clases.

Una posible solucion seria implementar una funcion dentro de la clase para la serializacion del propio objeto que seria lo que se meteria en la sesion. Algo como:
Código PHP:
$_SESSION['clase']=$miobjeto->serializar(); 
Luego donde quieres utilizar el objeto de la sesion:
Código PHP:
$miobjeto= new MiClase(); // crea un objeto vacio
$miobjeto->deserializar($_SESSION['clase']); // recrea el objeto a partir de los datos serializados
// trabajamos con $miobjeto
...
// guardamos la version actualizada de $miobjeto
$_SESSION['clase']=$miobjeto->serializar(); 
Este es mas o menos el comportamiento que creo hace PHP, con la salvedad de que no obliga a definir la clase en todas las paginas, usen o no la clase.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.