Foros del Web » Programando para Internet » PHP »

Unserialize objeto __wakeup()

Estas en el tema de Unserialize objeto __wakeup() en el foro de PHP en Foros del Web. Hola, necesito serializar un objeto para guardarlo en la base de datos. Hasta aquí todo bien. El problema biene cuando lo desserializo. El objeto recibe ...
  #1 (permalink)  
Antiguo 12/09/2014, 05:11
 
Fecha de Ingreso: diciembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 5
Unserialize objeto __wakeup()

Hola,

necesito serializar un objeto para guardarlo en la base de datos.

Hasta aquí todo bien.

El problema biene cuando lo desserializo.
El objeto recibe una serie de variables que se le pasan en el constructor y son externas al objeto (como puede ser la conexión con la base de datos).

La pregunta es: ¿Cómo puedo pasarle estas variables al desserializarlo?

Lo que he conseguido hasta ahora es:
  1. Guardar estas variables en $_SESSION
  2. Dentro del metodo __wakeup() cargarlas desde $_SESSION.

¿Hay otra forma de hacerlo sin usar superglobales?

Gracias.
  #2 (permalink)  
Antiguo 12/09/2014, 09:17
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Unserialize objeto __wakeup()

Utiliza el metodo __sleep antes o implementa la interfaz serializable
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 12/09/2014, 10:41
 
Fecha de Ingreso: diciembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 5
Respuesta: Unserialize objeto __wakeup()

Hola,

lo primero gracias por responder.

El metodo __sleep() lo utilizo antes de serializarlo. El objeto se serializa correctamente.

El problema es que el objeto tiene propiedades que no pueden ser serializadas, como la conexión a la base de datos.

Cuando necesito desserializarlo, también se deserializa bien. Pero la conexión con la base de datos no existe porque no se puede serializar.

Según he visto por ahí la solución es crear una nueva conexión con la base de datos en el metodo __wakeup(). Pero en mi caso la conexión con la base de datos ya la tengo creada, solo necesito volver a pasarsela a el objeto deserializado.

En cuanto a la interfaz Serializable, no la he usado pero por lo que he podido leer, es lo mismo que los metodos __sleep() y __wakeup(), solo que te permite un control mayor de las propiedades a serializar y deserializar. Pero tampoco se le puede pasar la conexión a la base de datos.

Un saludo.
  #4 (permalink)  
Antiguo 12/09/2014, 11:32
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Unserialize objeto __wakeup()

Publica el código para verlo
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: objeto, unserialize, variable
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 23:06.