Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/09/2010, 13:33
obeiix
 
Fecha de Ingreso: noviembre-2007
Mensajes: 19
Antigüedad: 16 años, 5 meses
Puntos: 0
Exclamación Leer datos en una clase. [Solucionado]

Hola!:

Solucionado: Poner include antes de que el session_start.

Os comento un problema que me tiene algo desesperado. Debe ser algo sencillo, pero como no suelo hacer uso de clases me trae loco.
El caso es que quería hacer uso de un tipo struct como en C. Así que definí la siguiente clase:

Código:
struct { //Productos
var $ref;
var $talla;
var $precio;
var $oferta;
var $color= array(); //Maximo 10 colores
	
	function guarda($valor,$i){
	 $this->color[$i]=$valor;
	}
	function lee($i){
	 return $this->color[$i];
	}
}
El caso es que si hago por ejemplo test.php:
Código:
//test.php
sesssion_start();

/* Opcion 1: Clase incluída*/
// Aquí iría class struct 

/*Opción 2: clase en otro archivo*/
// include_once('struct_class.php'); //Archivo con la clase struct.

if ($_GET[inicia]=='yes') //Inicializo valores
{
unset($_SESSION['cart']);
$_SESSION['cart']=array();
$_SESSION['cart']['28314']= new struct;

$_SESSION['cart']['28314']->ref=20;
$_SESSION['cart']['28314']->talla='Unica';
$_SESSION['cart']['28314']->guarda('uno',0);//guardo color[0]=uno
}

echo 'REF: '.$_SESSION['cart']['28314']->ref;
echo 'Color: '.$_SESSION['cart']['28314']->lee(1); // Accedo mediante método
echo 'Color: '.$_SESSION['cart']['28314']->color[1]; //Accedo de forma directa
De esta forma La opción uno funciona correctamente tanto con inicia=yes o sin incia. Pero la opción 2(clase en otro archivo) al inicializar muestra los valores. Pero al acceder a la variable iniciada anteriormente no muestra los valores.

Output:
Opción 1: inicia =yes y sin inicia=yes
REF: 20 Precio: 2.2 Color: uno Color: uno
Opción 2: incia= yes
REF: 20 Precio: 2.2 Color: uno Color: uno
Opción 2: sin inicia
REF: Precio: Color: Color:


Me trae de cabeza, podéis echarme una mano? Muchas gracias

Última edición por obeiix; 06/09/2010 a las 13:44 Razón: Tema solucionado.