Pasar objetos por sesión

Como no es la primera vez que me lo han preguntado, y tampoco es la primera vez que veo esta duda en un foro, les agrego un ejemplo sobre el tema. ;-)

En sí, la única "complejidad técnica", más que nada asociada a la falta de experiencia en cómo trabaja PHP, es que debemos siempre requerir los fuentes de la clase del objeto en cuestión, y particularidad mediante, antes de iniciar la sesión.







No hace falta serializar los objetos, las sentencias de sesión ya se encargan de todo el trabajo, ante dudas de cómo trabaja, siempre el manual oficial.

Saludos!

7 comentarios:

PaK0s dijo...

no he estudiado muy bien el caso solamente una vez he querido tener esa persistencia de datos que comentas, levantar un objeto a session, no se a que se deva pero he tenido problemas, ya que al parecer PHP si serializa los atributos publicos pero no la clase ni sus metodos, por lo que lei aquella ocación, en algunas versiones PHP si funciona con tansolo colocar el objeto en session en algunos no, hay que usar serialización, creo que el camino mas adecuado es serializar los objetos, no se bien si son características que se han indo agregando y desde que versión es posible, solo te comento que lo he hecho así y me ha fallado y tube que hechar mano de serialización.

PaK0s dijo...

ya encotre el error de aquel tiempo que les decia.. es que tengo ya un estructura de trabajo (digamos un framework) que he ido construyendo en el tiempo en el utilizo el método _autoload para no tener que hacer include..

estuve observando que para que PHP reconstruya el objeto se debe de incluir la clase, lo que pasaba en mi caso es que como el _autoload lo definía después de levantar la session PHP no encontraba la class, construía el objeto pero no sus métodos por que no los encontraba, me fije y si tienes el

require_once 'Usuario.php';

ante del session_start y por eso si se logran recrear los objetos..

bueno en esta ocacion si me funciono el guardado de objetos en session, aunque sigo teniendo la duda, creo si llegue a leer creo en la doc oficial que esto fallaba en unas versiones PHP, pero bueno cada quien cheque si su PHP soporta esto, si lo hace pues va a hacerlo ;)

Jose Miguel dijo...

Señor Enrique, puedo notar que usa mucho los términos "pragmático" y "dogmático" en su blog, su libro, y donde sea que tenga participación. ¿Podría explicarnos su significado en el ámbito de la programación?.

PD: Si es en un post de su blog, mucho mejor.

Omar Alonso dijo...

A mi me callo como anillo al dedo ya que tengo un programa donde voy agregando cosas de pagina en pagina y en ves de hacer sesiones para cada una de las variables, solo fui pasando el objeto y al finalizar hago la grabación en la base de datos, aqui lo unico que no me funciono fue que dentro de mi objeto persistencia no me jalo la conexion a la base de datos, y como esa clase la tengo en el patron singleton, solo le agregue al metodo la invocacion de nuevo y listo.

Leonardo Saucedo dijo...

Muy buena data! justo estaba necesitando esto. Muchas gracias!

Unknown dijo...

Hola buenas, tengo una duda, estoy comenzando con esto del patrón de diseño MVC, y tengo una duda que aún no logro dilucidar.
En el "modelo" estoy utilizando una clase que cree para acceder a la base de datos con un patrón singleton y en el mismo modelo estoy estructurando la información para luego pasarla al controlador, ejemplo:
- Controlador requiere la botonera, así que la pide al modelo.
- El modelo tiene un método que busca los datos de los botones en la base de datos y devuelve el html con la botonera.
- El controlador toma esta información y la asigna en una variable para que la vista imprima la botonera.
Mi duda es si está bien que el modelo organice directamente la información que recibe de la BD o solamente debe crear un arreglo con los datos recibidos para que el controlador cree el html requerido para la botonera.
Muchas gracias por su respuesta y disculpen por repetir botonera como 225 veces. Saludos desde Venezuela.

Jhonny dijo...

Muy buenos códigos. Gracias

Entradas populares