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

Duda sobre enviar o pasar objetos entre paginas (GET).

Estas en el tema de Duda sobre enviar o pasar objetos entre paginas (GET). en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola Estoy desarrollando un script con ajax y necesito pasar el Objeto de Base de Datos ($db) al script PHP que será invocado mediante ajax. ...
  #1 (permalink)  
Antiguo 07/08/2006, 11:01
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 3 meses
Puntos: 8
Duda sobre enviar o pasar objetos entre paginas (GET).

Hola

Estoy desarrollando un script con ajax y necesito pasar el Objeto de Base de Datos ($db) al script PHP que será invocado mediante ajax.

En ajax envio las variables mediante GET, es posible enbiar un objeto mediante URL(GET).

Gracias

salu2
  #2 (permalink)  
Antiguo 07/08/2006, 11:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Serializado si .. pero pierdes los métodos

Es decir .. primero tendrás que serializar el objeto:

serialize()
www.php.net/serialize

Luego ten presente que tendrás que instanciar tu objeto y tener la classe que lo contiene en el script que recibas tus objetos.

Y .. aplicar lo contrario:

unserialize()
www.php.net/serialize

Podrías propagar también tu objeto en una variable de sesión (con los mismos problemas que si lo serializas en cuanto a pérdida de los métodos). Ten presente también que en el URL no puedes propagar gran cantidad de datos .. ojo con eso.


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 07/08/2006, 12:03
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 3 meses
Puntos: 8
Cita:
Iniciado por Cluster Ver Mensaje
Serializado si .. pero pierdes los métodos
Luego ten presente que tendrás que instanciar tu objeto y tener la classe que lo contiene en el script que recibas tus objetos.
instanciar te refieres a crear nuevamente el objeto?
porque la idea es evitar tener que volver a crear el objeto nuevamente ya que es una clase de abstraccion de base de datos para tener solo una conexión a la base de datos.
  #4 (permalink)  
Antiguo 07/08/2006, 14:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Usa Singleton mejor asi no es nescesario preocuparte que se vuelva a crear, solo usas la referencia a la clase y todos felices.
  #5 (permalink)  
Antiguo 07/08/2006, 15:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por zsamer Ver Mensaje
instanciar te refieres a crear nuevamente el objeto?
porque la idea es evitar tener que volver a crear el objeto nuevamente ya que es una clase de abstraccion de base de datos para tener solo una conexión a la base de datos.
No domino POO a ese nivel .. pero en principio un link de conexión se perdería igualemnte uses POO o no ...

GatorV

Sería interesante ver un ejemplo "real" aplicado a manejo de BBDD y sus "links" de conexión .. para ver como no tener que hacer otro "_connect_" (aunque sea persistente la conexión ..).

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 07/08/2006, 15:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por zsamer Ver Mensaje
instanciar te refieres a crear nuevamente el objeto?
porque la idea es evitar tener que volver a crear el objeto nuevamente ya que es una clase de abstraccion de base de datos para tener solo una conexión a la base de datos.
Por ejemplo usando sesiones (para no liarme con la serialización y des-serialización), me refiero a:

Código PHP:
<?
include("mi_classe.php");

session_start();

if (isset(
$_SESSION['mi_objeto'])){
   
$objeto=$_SESSION['mi_objeto'];
} else {
   
$objeto=new miclass();
}

// accedes a los métodos de tu objeto o propiedades:
$objeto->metodo();
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 07/08/2006, 15:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 3 meses
Puntos: 8
Cita:
Iniciado por GatorV Ver Mensaje
Usa Singleton mejor asi no es nescesario preocuparte que se vuelva a crear, solo usas la referencia a la clase y todos felices.
hola,

te refieres a referenciar a la clase con singleton:

Código PHP:
$objeto=miclass::getInstance(); 
donde:

Código PHP:
class miclase{
....
   public function 
getInstance()
   {
     if(
self::$instance == NULL)
     {
      
self::$instance = new miclase();
     }


     return 
self::$instance;
   }
....

Es correcto?

Tengo un gran duda, el objeto existe en mi pagina principal (index.php), pero se pierde al pasarlo por GET al script que invocara ajax para mostrar el resultado en el DIV o Contenedor.

El tema es evitar que se pierda el Objeto, al usar singleton, creando una referencia a la clase mediante la funcion getInstance(), esta comprobara si existe la instacia al objeto y al no existir(ya que se pierde al pasarla por GET), creará una nueva. AL crear la nueva conección serián 2 conexiones creadas(la del script principal y la del script que invoca ajax).

es asi o no?
en realidad es un tremanda duda que tengo.

saludos y gacias

Última edición por zsamer; 07/08/2006 a las 15:49
  #8 (permalink)  
Antiguo 07/08/2006, 15:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Asi es, aunque tiene razon Cluster, cuando llamas a una funcion AJAX, se hace un nuevo request y por ende una nueva conexion a la base de datos ya que es una nueva inicilización.
  #9 (permalink)  
Antiguo 07/08/2006, 15:53
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 3 meses
Puntos: 8
Entonces estoy obligado a crear una nueva conexion a la base de datos al llamar una funcion AJAX.


Saludos y gracias.
  #10 (permalink)  
Antiguo 07/08/2006, 16:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por zsamer Ver Mensaje
Entonces estoy obligado a crear una nueva conexion a la base de datos al llamar una funcion AJAX.


Saludos y gracias.
Si, ..

una-petición -> una conexión ..

Aunque puedes usar conexiones persistentes para mitigar el tiempo de negociación del usuario/password (en este caso es tu motor de BBDD el que se encarga de seguri el link de conexión establecido según el cliente que lo pide (por IP) ..). Aquí tienes que tener cuidado con el n° de conexiones persisntes .. no son ilimitadas, podrías tener problemas por ahí ....

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 07/08/2006, 16:07
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 3 meses
Puntos: 8
ok, muchas gracias por las respuestas.

saludos.
  #12 (permalink)  
Antiguo 15/08/2006, 08:04
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 10 meses
Puntos: 32
El problema es ese, el mundo "stateless" de la web, donde queda claramente evidenciado al intentar implementar el patrón "singleton".

Cuando tu estás, por ejemplo, en una aplicación desktop hecha en Java, tu código está siempre corriendo, de forma permanente. Si tu creas una conexión con la base de datos, siempre estará ahí mientras viva la aplicación (o te desconecte el servidor de base de datos, etc), y cada vez que uses el "singleton", este funcionará para todos los casos que la uses.

En situaciones "típicas" de la web (sin las conexiones persistentes), luego de terminar la ejecución de un página, pasamos al estado "desconectado" y se perdemos todos los objetos. En este contexto, solo tendría sentido el "singleton" si tu página debe hacer llamadas a varios objetos que tienen acceso a la base de datos, pero tu quieres que estos no creen una conexión para cada uno.

Pero luego de concluida la página (terminamos de ejecutar la última línea de nuestro php), terminó la utilidad del "singleton", y el próximo contexto será una nueva ejecución de la página, esta misma u otra.

Estas son mis conclusiones aplicadas al mundo PHP desde el mundo Java; si no les gustan, tengo otras
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #13 (permalink)  
Antiguo 26/06/2007, 17:20
Avatar de chechelopez  
Fecha de Ingreso: mayo-2007
Mensajes: 18
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Duda sobre enviar o pasar objetos entre paginas (GET).

mmm creo que es un poco tarde pero... respecto solo a la parte de serializar objetos si es posible directamente desde sesion, evidentemente pierdes los metodos pero basta con tener la clase en un include para recuperarlos... donde procesas el objeto ... mira este ejemplo en esta pagina

Código PHP:
<?php
// classa.inc:
  
  
class {
      var 
$one 1;
    
      function 
show_one() {
          echo 
$this->one;
      }
  }
  
// page1.php:

  
include("classa.inc");
  
  
$a = new A;
  
$s serialize($a);
  
// store $s somewhere where page2.php can find it.
  
$fp fopen("store""w");
  
fwrite($fp$s);
  
fclose($fp);

// page2.php:
  
  // this is needed for the unserialize to work properly.
  
include("classa.inc");

  
$s implode("", @file("store"));
  
$a unserialize($s);

  
// now use the function show_one() of the $a object.  
  
$a->show_one();
?>
phpfreaks.com/phpmanual/page/language.oop.serialization.html

Última edición por jam1138; 26/06/2007 a las 19:47 Razón: Usar el espacio de las firmas para las firmas
  #14 (permalink)  
Antiguo 26/06/2007, 22:05
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 9 meses
Puntos: 2
Re: Duda sobre enviar o pasar objetos entre paginas (GET).

Cita:
Iniciado por chechelopez Ver Mensaje
mmm creo que es un poco tarde pero...
Ufff.. solo hay pasado unos 322 días
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 08:52.