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

Manejo de objetos en sesion

Estas en el tema de Manejo de objetos en sesion en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola ... Estoy creando una aplicacion orientada a objetos y por medio del patron singleton me aseguro de que solo exista una instancia del objeto, ...
  #1 (permalink)  
Antiguo 25/07/2007, 08:49
 
Fecha de Ingreso: marzo-2007
Mensajes: 23
Antigüedad: 17 años, 1 mes
Puntos: 0
Pregunta Manejo de objetos en sesion

Hola ...
Estoy creando una aplicacion orientada a objetos y por medio del patron singleton me aseguro de que solo exista una instancia del objeto, pero necesito hacer un llamado del mismo objeto desde varios archivos, es decir, crear el objeto y hacer uso de el durante toda la sesion .... estuve investigando y por medio de la serialiacion se puede mantener una "copia" del objeto en sesion, pero no puedo acceder a los metodos ...
Alguien tiene idea de que debo hacer para poder utilizar el mismo objeto en archivos diferentes??
Gracias!!
  #2 (permalink)  
Antiguo 25/07/2007, 11:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Manejo de objetos en sesion

Hola blanquis, para poder manejar objetos en la session es necesario primero incluir la definicion de la funcion antes de hacer el session_start();

Saludos.

PD te muevo al foro de PHP Orientado a Objetos.
  #3 (permalink)  
Antiguo 26/07/2007, 11:00
Avatar de chechelopez  
Fecha de Ingreso: mayo-2007
Mensajes: 18
Antigüedad: 17 años
Puntos: 0
Re: Manejo de objetos en sesion

supongo que gatorv quiso decir la definicion de la clase ya que supongo te sale PHP_incomplete object o algo asi...

http://www.php.net/manual/es/language.oop.serialization.php


Pero mira algo asi... :

Perro.class.php

Código PHP:
class Perro {
    public function 
Perro() {
     
$_SESSION['objetoPerro'] = $this;
    }
    public function 
ladra() {
        echo 
"ladrando ...";
    }

ArchivoCreacion.php

Código PHP:
require_once ('Perro.class.php'); 
// ojo incluir la definicion de la clase antes de session_start
session_start();
$perro = new Perro(); 
ArchivoLlamada.php

Código PHP:
require_once ('Perro.class.php'); 
// ojo incluir la definicion de la clase antes de session_start
session_start();
$_SESSION['objetoPerro']->ladra(); 
Ojo : no quiere decir que sea lo mejor tener el objeto desde el constructor pasandole la referencia.. pero... a mi me sirvio para llamadas con ajax ya que necesitaba que el objeto persistiera en todo momento... y si estas aplicando el patron singleton sobre una misma instancia.. entonces creo que te queda como anillo al dedo...

Saludos
ATTE
Sergio Lopez
http://arquitectoweb.blogspot.com
  #4 (permalink)  
Antiguo 06/08/2007, 08:06
 
Fecha de Ingreso: agosto-2007
Mensajes: 12
Antigüedad: 16 años, 9 meses
Puntos: 0
De acuerdo Re: Manejo de objetos en sesion

Hola Blanquis como t va...

Por lo que alcancé a entender de tu problema creo que una posible solucion seria esta :

Mediante esta sentencia agregas el objeto al vector de session :

$_SESSION['NombreEnVEctorSession']=urlencode(serialize($variableTipoObjeto));


Luego en la otra pagina donde quieras usar el objeto haces esto:

$VAriableTipoObjeto=unserialize(urldecode($_SESSIO N['NombreEnVEctorSession']));


Y Listo, ya dispones del objeto en la otra pagina con todos los valores de sus atributos. Encaso q te quieras mover a otra pagina haces el mismo proceso nuevamente, reasignas el objeto al vector session y luego en la otra pagina lo sacas y lo utilizas.
No olvides hacer el include del archivo .php q contiene la declaracion de la clase en todas las paginas donde vayas a utilizar el objeto, xq sino t va a salir un error diciendote que no conoce los metodos ni los atributos a los q quires acceder.

Espero haberte colaborado, que estes bien.
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 18:50.