Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Permanencia de objetos... (http://www.forosdelweb.com/f68/permanencia-objetos-480861/)

Lucha 12/04/2007 10:20

Permanencia de objetos...
 
Hola a tod@s:

Estoy desarrolando una web en php con acceso a datos mysql. Resulta que los datos los cargo en unos objetos que paso de una página a otra "serializandolos". El acceso a la base de datos es lento. De hecho, muchas veces es tan lento que los usuarios mas nerviosos pueden pulsar F5 o el icono de "actualizar", lo que me da este error:


Warning: unserialize() expects parameter 1 to be string, object given in C:\directorio_noseque\index2.php on line 19

Warning: unserialize() expects parameter 1 to be string, object given in C:\directorio_noseque\index2.php on line 23

Warning: unserialize() expects parameter 1 to be string, object given in C:\directorio_noseque\index2.php on line 26

Fatal error: Call to a member function dame_alum() on a non-object in C:\directorio_noseque\index2.php on line 32

Mi pregunta: ¿a qué se debe este tipo de error? Se supone que los objetos serializados se mandarían de nuevo con cada "actualización de la pantalla", ¿no?

Gracias por vuestras respuestas y vuestro tiempo.

GatorV 12/04/2007 10:31

Re: Permanencia de objetos... chungo, chungo...
 
Puedes poner el codigo de como estas enviando los objetos?

GatorV 12/04/2007 10:32

Re: Permanencia de objetos... chungo, chungo...
 
y el codigo de como lo recibes?

Lucha 12/04/2007 11:49

Re: Permanencia de objetos... chungo, chungo...
 
Estupendo:

//Creación/recuperación de los objetos de la web
if(!isset($_SESSION["sistema"]))
{
$sistema=new sistema_web();
}
else
{
$sistema=unserialize($_SESSION["sistema"]);
}

if(isset($_SESSION["usuario"]))
$usuario=unserialize($_SESSION["usuario"]);

if(isset($_SESSION["testAlumno"]))
$testAlumno=unserialize($_SESSION["testAlumno"]);

if(isset($_SESSION["testProfesor"]))
$testProfesor=unserialize($_SESSION["testProfesor"]);


y para serializarlos:

//Guardamos en la sesión los objetos de la web
$_SESSION["sistema"]=serialize($sistema);
if(isset($usuario))
$_SESSION["usuario"]=serialize($usuario);
if(isset($testAlumno))
$_SESSION["testAlumno"]=serialize($testAlumno);
if(isset($testProfesor))
$_SESSION["testProfesor"]=serialize($testProfesor);


Gracias por tu interes.

Lucha 16/04/2007 00:59

Re: Permanencia de objetos...
 
Bueno, mas facil todavía. ¿Alguien me puede enviar un ejemplo de código suyo mostrando como maneja los objetos o como les da permanencia?

Gracias.

GatorV 16/04/2007 07:59

Re: Permanencia de objetos...
 
Pues es facil no se que problema tienes:
pagina1.php
Código PHP:

include( 'definicion/hacia/el/objeto.php' );
session_start();

$miObjeto = new objeto();
$_SESSION['miObjeto'] = $miObjeto;
header"Location: pagina2.php" ); 

Pagina2.php
Código PHP:

include( 'definicion/hacia/el/objeto.php' );
session_start();

$miObjeto $_SESSION['miObjeto'];
$miObjeto->hazAlgo(); 


Lucha 16/04/2007 09:23

Re: Permanencia de objetos...
 
Entonces... ¿no utilizas "serialize" y "unserialize" para la permanencia de objetos?

GatorV 16/04/2007 11:20

Re: Permanencia de objetos...
 
No es necesario, PHP automaticamente hace esos pasos por ti.

GatorV 16/04/2007 11:21

Re: Permanencia de objetos...
 
y para comparar te recomiendo que uses el operador instanceof.

Salu2 :-)

Lucha 16/04/2007 12:08

Re: Permanencia de objetos...
 
Para comparar el instance of. Ok. Esto... ¿un pequeño caso practico sobre eso :ojotes: ?

GatorV 16/04/2007 15:07

Re: Permanencia de objetos...
 
Código PHP:

$miObjeto = new MiObjeto();
if( 
$miObjeto instanceof MiObjeto ) {
    echo 
$miObjeto->algo();
} else {
    echo 
'$miObjeto no es un objeto del tipo MiObjeto';



Lucha 17/04/2007 00:46

Re: Permanencia de objetos...
 
¡Gracias, GatorV!

¡Me pongo a implementarlo ahora mismo!


La zona horaria es GMT -6. Ahora son las 23:14.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.