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

PHP OO Crear una sola vez objeto visible desde varios scripts

Estas en el tema de Crear una sola vez objeto visible desde varios scripts en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, espero que el título haya sido descriptivo. Voy a dar un ejemplo pero no se apeguen a ese ejemplo, en realidad la solución se ...
  #1 (permalink)  
Antiguo 11/07/2011, 14:07
 
Fecha de Ingreso: julio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Crear una sola vez objeto visible desde varios scripts

Hola, espero que el título haya sido descriptivo.
Voy a dar un ejemplo pero no se apeguen a ese ejemplo, en realidad la solución se adaptaría en varios lugares de la aplicación. Quisiera por ejemplo en login.php crear un objeto de una clase "usuario" con propiedades como id, nombre, apellido, edad, idioma, etc., y que luego en "listarpedidos.php" se pudiera consultar este mismo objeto para saber qué usuario está trabajando y cuales son sus preferencias y actuar apropiadamente. Pero si bien el objeto en el primer script se crea, parece que otros scripts no pueden accederlo. ¿Hay forma de que puedan? Gracias!
  #2 (permalink)  
Antiguo 11/07/2011, 14:19
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
Respuesta: Crear una sola vez objeto visible desde varios scripts

Lo puedes guardar en una sesión, así lo tienes disponible en toda la duración de la sesión.

Saludos.
  #3 (permalink)  
Antiguo 11/07/2011, 14:28
 
Fecha de Ingreso: julio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Crear una sola vez objeto visible desde varios scripts

Hola, GatorV, muchas gracias por responder.
¿Quieres decir que el objeto puede guardarse en la sesión así como siempre se pudieron guardar valores simples? Eso sería ideal y ya me pondría a averiguar los detalles.
  #4 (permalink)  
Antiguo 11/07/2011, 14:39
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
Respuesta: Crear una sola vez objeto visible desde varios scripts

Así es, siempre y cuando el objeto no tenga recursos o punteros a archivos, este se puede guardar en una sesión como cualquier variable, solo asegurate de incluir la definición de la clase antes de mandar llamar a session_start().

Saludos.
  #5 (permalink)  
Antiguo 11/07/2011, 14:43
 
Fecha de Ingreso: julio-2011
Mensajes: 3
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Crear una sola vez objeto visible desde varios scripts

Muchas gracias, empiezo a intentarlo. No lo dije antes pero espero que también estén disponibles los métodos del objeto, igualmente si no se pudiera lo resolveré de algún modo. Almacenarlo en la sesión no lo sabía.
  #6 (permalink)  
Antiguo 11/07/2011, 14:46
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
Respuesta: Crear una sola vez objeto visible desde varios scripts

Claro, siempre y cuando incluyas la definición antes:
Usuario.php
Código PHP:
Ver original
  1. class Usuario
  2. {
  3.         private $_nombre;
  4.  
  5.         public function __construct($nombre)
  6.         {
  7.                $this->_nombre = $nombre;
  8.         }
  9.  
  10.          public function saluda()
  11.          {
  12.                  return "Hola, " . $this->_nombre;
  13.          }
  14. }

Pag1.php:
Código PHP:
Ver original
  1. require_once('Usuario.php');
  2. $Juan = new Usuario('Juan');
  3. $_SESSION['juan'] = $Juan;

Pag2.php
Código PHP:
Ver original
  1. require_once('Usuario.php');
  2. echo $_SESSION['juan']->saluda();

Saludos.
  #7 (permalink)  
Antiguo 11/07/2011, 15:31
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Crear una sola vez objeto visible desde varios scripts

Pense que hacia falta serializar el obj primero
__________________
Salu2!
  #8 (permalink)  
Antiguo 11/07/2011, 15:39
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
Respuesta: Crear una sola vez objeto visible desde varios scripts

No es necesario siempre y cuando incluyas la definición del objeto antes de llamar a session_start().
  #9 (permalink)  
Antiguo 12/07/2011, 06:51
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Crear una sola vez objeto visible desde varios scripts

Cita:
Iniciado por GatorV Ver Mensaje
No es necesario siempre y cuando incluyas la definición del objeto antes de llamar a session_start().
Tenés idea de por qué?

Saludos!
  #10 (permalink)  
Antiguo 12/07/2011, 06:58
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
Respuesta: Crear una sola vez objeto visible desde varios scripts

Porque al terminar el script y PHP guardar la información de $_SESSION, llama a un serialize() en tu objeto, y este llama a __sleep() en tu objeto para ver que valores persistir.

Al llamar a session_start(), hace un unserialize() y a __wakeup, si no existe la clase, el objeto queda como un IncompleteClass y no vas a poder hacer las llamadas al objeto.

Saludos.

Etiquetas: poo
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 14:18.