Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO php variable de session guarda una clase, despues como logro guardar datos.

Estas en el tema de php variable de session guarda una clase, despues como logro guardar datos. en el foro de PHP en Foros del Web. hola , soy luis tengo problemas con el codigo en php , haber si me ayudan; en el index del php cree una variable de ...
  #1 (permalink)  
Antiguo 21/08/2013, 21:27
 
Fecha de Ingreso: agosto-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
php variable de session guarda una clase, despues como logro guardar datos.

hola , soy luis tengo problemas con el codigo en php , haber si me ayudan; en el index del php cree una variable de sesion que guarda una clase $_SESSION['venta']=new controladorventas_temp(); esta todo bien solo me da error en otro php al usar la variable de session : $_SESSION['venta']->setventas_temp($ven);
la clase controlador tiene :
class controladorventas_temp{
private $vventas_temp;
public function controladorventas_temp(){
$this->vventas_temp=array();
}
}
  #2 (permalink)  
Antiguo 21/08/2013, 21:55
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

Es necesario que pongas el error que te esta dando php, pero por lo que dices es probable que no estés incluyendo la definición de la clase en el siguiente script donde mandas a llamarla mediante SESSION. En el manual lo explica:http://php.net/manual/en/oop4.serialization.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 21/08/2013, 21:56
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

intenta utilizar los "highlight".

tu código es este no?
Código PHP:
Ver original
  1. //intenta utilizar la convención camel case (la primera letra de la clase en mayúsculas)
  2. class controladorventas_temp{
  3. private $vventas_temp;
  4. public function controladorventas_temp(){
  5.  
  6. //aquí solo dices que la propiedad $vventas_temp; es un array
  7. $this->vventas_temp=array();
  8. }
  9. }
  10. $_SESSION['venta']=new controladorventas_temp();
  11.  
  12. //aquí pasas un parámetro pero si te fijas en el método controladorventas_temp(¿dónde está el parámetro?)
  13. $_SESSION['venta']->setventas_temp($ven);
en el código te digo el por qué evidentemente te va a devolver un error.

saludos
__________________
Ayúdame a hacerlo por mi mismo.
  #4 (permalink)  
Antiguo 21/08/2013, 22:08
 
Fecha de Ingreso: agosto-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

la clase controlador si tiene la funcion :
class controladorventas_temp{
private $vventas_temp;

public function controladorventas_temp(){
$this->vventas_temp=array();
}
public function setventas_temp($newrec){
array_push($this->vventas_temp,$newrec);
}}

y el error q me da es:
Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "controladorventas_temp" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /home/u369062475/public_html/lucho/presentacion/aj_venta.php on line 61

line 61:$_SESSION['venta']->setventas_temp($ven);
  #5 (permalink)  
Antiguo 21/08/2013, 22:23
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

Cita:
Iniciado por lushiru Ver Mensaje
la clase controlador si tiene la funcion :
class controladorventas_temp{
private $vventas_temp;

public function controladorventas_temp(){
$this->vventas_temp=array();
}
public function setventas_temp($newrec){
array_push($this->vventas_temp,$newrec);
}}

y el error q me da es:
Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "controladorventas_temp" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /home/u369062475/public_html/lucho/presentacion/aj_venta.php on line 61

line 61:$_SESSION['venta']->setventas_temp($ven);
llamas a la clase igual que al método,
declaras la propiedad vventas_temp como array, pero no llamas al método,
haces un array_push pero no utilizas return.

por lo demás no entiendo el por qué de tu error. a ver si te pueden ayudar. suerte.
__________________
Ayúdame a hacerlo por mi mismo.
  #6 (permalink)  
Antiguo 21/08/2013, 22:26
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

Cita:
Iniciado por lushiru Ver Mensaje
Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "controladorventas_temp" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /home/u369062475/public_html/lucho/presentacion/aj_venta.php on line 61

line 61:$_SESSION['venta']->setventas_temp($ven);
Como te dije eso pasa por que no incluyes el archivo donde definiste tu clase, lo debes de incluir en todas las paginas que vayan necesitar tu clase. Una vez mas te invito a leer el manual
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 22/08/2013, 09:36
 
Fecha de Ingreso: agosto-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

bueno resumiendo el problema:
declaro en un php index inicial la variable session = $_SESSION['venta']=new controladorventas_temp(); luego tengo definida la clase controlador en otro php seria=
class controladorventas_temp{
private $vventas_temp;
public function controladorventas_temp(){
$this->vventas_temp=array();
}
public function getvventas_temp(){
return $this->vventas_temp;
}
public function setventas_temp($newrec){
array_push($this->vventas_temp,$newrec);
}
public function getventas_temp($pos){
return $this->vventas_temp[$pos];
}
public function eliminarpos($pos){
unset($this->vventas_temp[$pos]);
$this->vventas_temp = array_values($this->vventas_temp);
}
}}
luego solo trato de setear en la variable sesion una variable = $_SESSION['venta']->setventas_temp($ven); (en los php donde uso las funciones de controlador si llama con require_once al archivo controlador)
lo cual me genera el siguiente error=
Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "controladorventas_temp" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /home/u369062475/public_html/lucho/presentacion/aj_venta.php on line 61
ayuda plz . alguien sapbe?
  #8 (permalink)  
Antiguo 22/08/2013, 10:40
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

  1. Acostumbra a usar Highlight le facilitas a los que te quieren ayudar la lectura de tu código.
  2. lee el error, te esta diciendo lo que pasa

El problema no es la clase si no como la incluyes en las demás paginas que la usan, Asi que a falta de tu código completo para saber, te dejo uno sencillo para que compares con el tuyo

Clase sencilla que implementa un contador: myclase.php
Código PHP:
Ver original
  1. class MyClass
  2. {
  3.  
  4.     private $_counter = 0;
  5.  
  6.     public function increment()
  7.     {
  8.         return $this->_counter++;
  9.     }
  10.    
  11. }

registro de la clase en la sesión y uso posterior: index.php
Código PHP:
Ver original
  1. //Primero se incluye la clase
  2. require_once __DIR__ . '/MyClass.php';
  3. //se llama a la sesión
  4. //se registra el objeto MyClass en la sesión
  5. if (! isset($_SESSION['myObject'])) {
  6.     $_SESSION['myObject'] = new MyClass();
  7.  
  8. }
  9. //verifico que mi clase este cargada en la sesión
  10. //y que se incremente el contador
  11. echo get_class($_SESSION['myObject']),   "<br>";
  12. echo $_SESSION['myObject']->increment(), "<br>";

LLamada posterior en otro script: pagina.php
Código PHP:
Ver original
  1. //Primero se incluye la clase
  2. require_once __DIR__ . '/MyClass.php';
  3. //se llama a la sesión
  4. //se registra el objeto MyClass en la sesión
  5. if (! isset($_SESSION['myObject'])) {
  6.     $_SESSION['myObject'] = new MyClass();
  7.  
  8. }
  9. //verifico que mi clase este cargada en la sesio
  10. //y que se incremente el contador
  11. echo get_class($_SESSION['myObject']),   "<br>";
  12. echo $_SESSION['myObject']->increment(), "<br>";
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #9 (permalink)  
Antiguo 22/08/2013, 12:40
 
Fecha de Ingreso: agosto-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

hola , bueno la idea de guardar la clase en la session seria para no perder los datos ya guardados en el vector de la clase, y asi ir guardando datos en la session que tiene la clase; la idea es no guardar los datos aun en la base de datos hasta cuando esten listos. ty .
  #10 (permalink)  
Antiguo 22/08/2013, 12:54
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

Cita:
Iniciado por lushiru Ver Mensaje
hola , bueno la idea de guardar la clase en la session seria para no perder los datos ya guardados en el vector de la clase, y asi ir guardando datos en la session que tiene la clase; la idea es no guardar los datos aun en la base de datos hasta cuando esten listos. ty .
La idea fundamental de como debes de hacerlo te la puse en el código de ejemplo en un mensaje anterior a este.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #11 (permalink)  
Antiguo 22/08/2013, 13:07
 
Fecha de Ingreso: agosto-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

lo que pasa es que hay tu estas creando denuevo la variable en el mismo php , yo estoy tratando de usar la variable antes creada en una sesion variable en otro php.
  #12 (permalink)  
Antiguo 22/08/2013, 13:50
 
Fecha de Ingreso: agosto-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "controladorventas_temp" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /home/u369062475/public_html/lucho/presentacion/aj_venta.php on line 61
  #13 (permalink)  
Antiguo 22/08/2013, 13:57
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

Primero que nada el ejemplo es para que veas el orden que debe de tener el código para evitar el error que mencionaste al principio de este hilo. Asi que lo que tienes que hacer es adaptar la idea para que funcione con tus requerimientos.
Recapitulare los pasos a seguir sin codigo:
  1. Agregar definición de clase (require, requier_once, etc).
  2. usar session_start();
  3. verificar si esta registrada tu variable si no, registrarla (validacion)
  4. hacer uso de la variable SESSION

Cita:
Iniciado por lushiru Ver Mensaje
lo que pasa es que hay tu estas creando denuevo la variable en el mismo php , yo estoy tratando de usar la variable antes creada en una sesion variable en otro php.
Perdón por esto, creo que no fui claro al comentar mi código y de seguro esta es la parte que te genera conflicto:
Código PHP:
Ver original
  1. //Comprueba si nuestro objeto esta registrado en la sesion
  2. //Si ya esta regsitrada no se jecuta el if, de no ser asi se agrega el objeto a SESSION
  3. if (! isset($_SESSION['myObject'])) {
  4.     $_SESSION['myObject'] = new MyClass();
  5.  
  6. }

En ese fragmento de código estoy verificando que mi sesión tenga lo que le estoy pidiendo; en el ejemplo la variable myObject que esta almacenando una instancia de MyClass. Si la sesión no tiene lo que le pido entonces si hago uso de new MyClass(). En resumen ese if se ejecuta una sola vez, en las siguientes paginas estarás usando lo que guardaste en la sesión.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #14 (permalink)  
Antiguo 22/08/2013, 18:23
 
Fecha de Ingreso: agosto-2013
Mensajes: 57
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: php variable de session guarda una clase, despues como logro guardar datos

he iintentado hacer como tu dices pero solo me funciona la variable session cuando la valido antes y despues hago el guardado de datos; creo que usare bd nomas thx

Etiquetas: clase, session, variable
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 21:41.