Foros del Web » Programando para Internet » PHP »

Como Meto una calse a uns session, y como la leo de ella

Estas en el tema de Como Meto una calse a uns session, y como la leo de ella en el foro de PHP en Foros del Web. Hola: Como hago para meter una clase a una session php, y despues como la leo, ya que efectivamente la ingrese a la session, pero ...
  #1 (permalink)  
Antiguo 25/06/2003, 02:01
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 131
Antigüedad: 14 años, 7 meses
Puntos: 2
Pregunta Como Meto una calse a uns session, y como la leo de ella

Hola: Como hago para meter una clase a una session php, y despues como la leo, ya que efectivamente la ingrese a la session, pero cuando la voy a leer me dice que no existe un metodo que tiene esa clase.. pero al averiguar con el session_is_register, me dice que la clase si esta en la session, pero por que no me encuentra los metodos


gracias.... Es urgente :
  #2 (permalink)  
Antiguo 25/06/2003, 02:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues en una sesión no puedes "meter" una classe .. En la sesión te quedarán las variabels que use .. pero no los métodos como ya has comprobado..

Igualmente vas a tener que hacer tu include("classe.php") en tódas las páginas que lo requieras ...

Ademas, ten cuidado con "meter" un objeto en una sesión, pues hay que serializarlo:

Para urgencias .. visita siempre antes el manual oficial de PHP:
http://www.php.net/manual/en/languag...ialization.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 25/06/2003, 02:17
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 131
Antigüedad: 14 años, 7 meses
Puntos: 2
ummmm, bueno. pero entonces como hago.. ya que llegue hasta ese punto y no se que hacer.

Expliqueme mas acerca de la serializacion de los objetos, no entendi muy bien la explicacion, y quisiera saber si lo que intento hacer es posible o no, ya que estoy haciendo un carrito de compras y la idea era almacenar toda la informacion en una clase que ya tengo lista y que funciona perfecto, pero que me toca meter a la session para utilizarla siempre

gracias
  #4 (permalink)  
Antiguo 25/06/2003, 05:49
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 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.
  #5 (permalink)  
Antiguo 25/06/2003, 12:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo lo uso así:

Código PHP:
<?
// Incluyo la classe (pues ya te comenté que se pierden los métodos si serializas el objeto entero)
require("./classes/carrito_compras.class.php");

//Inicio uso sesiones:
session_start();

// Miro si está definida mi variable de sesión .. si no lo está instancio el objeto.
// Si está definida la variable de sesión del objeto .. lo desserializo
if (empty($_SESSION['cesta'])) {
    
$cesta=new Carrito;
} else {
    
$cesta=unserialize($_SESSION['cesta']);
}


// Uso la clase:
$cesta->metodo_cesta();

//Cuando termino de operar con mi classe .. serializo y almaceno el objeto en la session (bajo su variable):

$_SESSION['cesta']=serialize($cesta);
?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 25/06/2003, 12:18
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 131
Antigüedad: 14 años, 7 meses
Puntos: 2
Ok, Gracias, ya me funciono perfecto, justo lo que yo queria
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 05:39.