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

objetos almacenados en sesiones

Estas en el tema de objetos almacenados en sesiones en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Chicos, q tal, tengo un error. Tengo un array llamado carrito en el cual almaceno objetos de la clase Item, pero cuando quiero acceder a ...
  #1 (permalink)  
Antiguo 05/09/2004, 11:14
 
Fecha de Ingreso: diciembre-2003
Mensajes: 148
Antigüedad: 20 años, 4 meses
Puntos: 0
objetos almacenados en sesiones

Chicos, q tal, tengo un error.
Tengo un array llamado carrito en el cual almaceno objetos de la clase Item, pero cuando quiero acceder a este objeto de la clase no pasa nada me sale un error T_VARIABLE

Código PHP:
require "classes.inc";

$item $_SESSION["carrito"][0]; // aca me traeria el primer objeto del array pero no sale nada


$item = (Item$_SESSION["carrito"][0]; // aca tambien pero nada tampoco

echo $item->colour_id// esto de aca me trae vacio con la primera opcion y con la segunda me sale error T_VARIABLE  q hay un '(' de más. 
Saludos
Rubén
  #2 (permalink)  
Antiguo 05/09/2004, 11:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cuando propagas un objeto en una sesión.. los métodos se pierden así que debes incluir tu definición de classe en todo script que requiera acceder a tu objeto que propagas en una sesión .. sería algo tipo:

Código PHP:
<?
// Inicio uso sesiones:
session_start();
// Incluir tu classe
include("carrito.class.php");

// Comprobar que la sesión con tu objeto esté definido .. sino, se instancia denuevo.
if (isset($_SESSION['carrito'])){
$carrito=$_SESSION['carrito'];
} else {
// Instancias tu objeto ...
$carrito=new carrito();
}

// y apartir de aquí ya puedes usar tu objeto con sus propiedades y métodos ...
$carrito->metodo();
?>
A todo esto . no sé como trabaja tu objeto .. pero es tan símple como hacer

Código PHP:
<?
// el código anterior con el if() .. el session_start y demás ..

// usas tus métodos y demás ..
$carrito->add_item($item);

// y cuando termines de trabajar tu objeto .. lo propagas en la sesión:
$_SESSION['carrito']=$carrito;
?>
Un saludo,
  #3 (permalink)  
Antiguo 05/09/2004, 11:57
 
Fecha de Ingreso: diciembre-2003
Mensajes: 148
Antigüedad: 20 años, 4 meses
Puntos: 0
claro si incluyo la clase.
Lo incluyo de esta manera

require "classes.inc";

no se si tengo q ponerlo "classes.class.php"???
igual lo probe y nada

mira, carrito no es una clase, es solo un array, un vector, y ese vector almacena objetos de la clase Item, que por cierto es asi:

class Item
{
var $item_id = "0";
var $colour_id = "0";
var $size_id = "0";
}

eso es y no puedo acceder a esos valores desde el otro lado. No se si puede reconocer un objeto en un array desde una sesion???. Parece que no...

Saludos
Rubén
  #4 (permalink)  
Antiguo 05/09/2004, 12:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
require "classes.inc";

no se si tengo q ponerlo "classes.class.php"???
igual lo probe y nada
Bueno .. eso es lo de menos .. el caso es incluir la definición de tu classe y/o métodos que contenga.

Cita:
mira, carrito no es una clase, es solo un array, un vector, y ese vector almacena objetos de la clase Item, que por cierto es asi:

class Item
{
var $item_id = "0";
var $colour_id = "0";
var $size_id = "0";
}
Mi fuerte no es OOP (Programación orientada a objetos) .. Pero, deberías usar metodos para acceder a tus variables de tu objeto.

De todas formas . .uses eso o no .. en algún momento debes instanciar tu objeto ($objeto=new objeto() ... ) Cuando lo hagas así usa el método que te he propuesto.

Podrías hechar un vistazo a como trabaja PHP con OOP ya que no soporta por ejemplo todo los standars que podrías conocer de C#, Java y demás lenguajes ..

http://www.zonaphp.com/articulo1.php

Un saludo,

Última edición por Cluster; 05/09/2004 a las 12:42
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 07:02.