Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Objeto en variable de sesion se destruye

Estas en el tema de Objeto en variable de sesion se destruye en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, tengo un objeto asignado a una variable de sesion aplicando la funcion serialize() Código PHP: include( 'competidor.class.php' ); session_start (); $competidor  = new  competidor ( ...
  #1 (permalink)  
Antiguo 09/01/2010, 17:18
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Objeto en variable de sesion se destruye

Hola, tengo un objeto asignado a una variable de sesion aplicando la funcion serialize()
Código PHP:
include('competidor.class.php');
session_start();

$competidor = new competidor($datosPersonales);
$_SESSION['competidor'] = serialize($competidor);

$_SESSION['datosPersonales'] = $datosPersonales//variable de prueba 
, luego lo muestro despues de haberle aplicado unserialize()

Código PHP:
include('competidor.class.php');
session_start();
    
$competidor unserialize($_SESSION['competidor']);


echo 
"<pre>";
echo 
$competidor->nombre;
echo 
$competidor->apellidoPaterno;
echo 
"</pre>";

print_r($_SESSION['datosPersonales']);//variable de prueba 
el problema es que despues de mostrado al intentar acceder a el esta ya no existe .

Lo extraño es que si creo una variable de sesion con los mismos datos que posse el objeto esta perdura ...
__________________
Nuevamente a las pistas ...
  #2 (permalink)  
Antiguo 10/01/2010, 08:40
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Objeto en variable de sesion se destruye

Estimado, revisa el manual oficial, no necesitas serializar el objetos para guardarlos en la sesión. Simplemente guarda la instancia en la sesión, y como bien haces, requiere siempre el código fuente de la clase para que puedas usarla una vez recuperada (recomendación: en el caso de los objetos siempre usa require_once).

PD: no estás respetando estándares básicos de POO: las clases deben iniciar en mayúsculas, los atributos nunca deben ser públicos, etc.

Saludos!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Última edición por enriqueplace; 10/01/2010 a las 18:21 Razón: complementa la explicación
  #3 (permalink)  
Antiguo 11/01/2010, 06:08
Avatar de internia  
Fecha de Ingreso: junio-2005
Ubicación: Granada, España
Mensajes: 7
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Objeto en variable de sesion se destruye

Para aquellos que alguna vez tengan problemas a la hora de guardar objetos en sesión: siempre hay que definir la clase antes de iniciar la sesión.

Por ejemplo, si la clase la tengo definida en un archivo MiClase.class.php, tengo que incluir este archivo antes del session_start()

Serializar no nos hace falta porque ya lo hace php por nosotros, sí nos sería útil por ejemplo para guardar el objeto en un archivo: lo serializaríamos y escribiríamos la cadena resultante en el archivo. Después, podríamos coger el contenido del archivo y deserializarlo, así tendríamos el objeto original.

Pero no olvidéis otras complicaciones que se pueden presentar. Por ejemplo, si el objeto que estáis guardando, ya sea en sesión o en archivo, tiene una conexión no persistente a la base de datos, ésta se perderá entre carga y carga de página, y habrá que conectar de nuevo nada más recuperar el objeto.

Saludos
[URL="http://www.programadorphpfreelance.com"]http://www.programadorphpfreelance.com[/URL]
  #4 (permalink)  
Antiguo 11/01/2010, 11:54
Avatar de jorgedx  
Fecha de Ingreso: junio-2005
Ubicación: Chile, Los Andes
Mensajes: 406
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: Objeto en variable de sesion se destruye

Cita:
Iniciado por enriqueplace Ver Mensaje
Estimado, revisa el manual oficial, no necesitas serializar el objetos para guardarlos en la sesión. Simplemente guarda la instancia en la sesión, y como bien haces, requiere siempre el código fuente de la clase para que puedas usarla una vez recuperada (recomendación: en el caso de los objetos siempre usa require_once).

PD: no estás respetando estándares básicos de POO: las clases deben iniciar en mayúsculas, los atributos nunca deben ser públicos, etc.

Saludos!

Muchas gracias a ambos, solo ocupe la instancia del objeto y la asigne a la variable de sesion, , asi q ya esta perfecto ....


Se me quedaba felicitar a enriqueplace por su libro, le di una pasada y se ve interesante espero poder leerlo con mas atencion.
__________________
Nuevamente a las pistas ...

Última edición por jorgedx; 11/01/2010 a las 12:03 Razón: felicitacion

Etiquetas: objeto, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:15.