Foros del Web » Programando para Internet » PHP »

Deserializar un objeto en concreto

Estas en el tema de Deserializar un objeto en concreto en el foro de PHP en Foros del Web. Buenos días, es la primera vez que escribo por aquí, lo primero saludaros y lo segundo gracias por echarme una mano con este problemilla. Bien, ...
  #1 (permalink)  
Antiguo 17/01/2016, 02:46
 
Fecha de Ingreso: enero-2016
Ubicación: Málaga
Mensajes: 1
Antigüedad: 8 años, 3 meses
Puntos: 0
Deserializar un objeto en concreto

Buenos días,
es la primera vez que escribo por aquí, lo primero saludaros y lo segundo gracias por echarme una mano con este problemilla.

Bien, el problema que tengo es el siguiente,

Estoy realizando un programa (un ejercicio) de venta de entradas de coches, en el que además de venir tres zonas definidas por defecto, se pueden ir añadiendo tantas como el usuario quiera.
Bueno, las que vienen por defecto, las guardo en variables de sesion diferentes y las puedo usar de forma independiente siempre que quiera, es decir, les puedo aplicar un método de forma indepediente a cada una.
Pero el problema viene cuando quiero aplicar un método a una de las zonas que crea el usuario mediante formulario, ya que no sé como hacerlo.

Les dejo mi código por si pueden ayudarme a arreglarlo.
Gracias!

************************************************** ***************


<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>

<?php
include_once 'Entradas.php';

if (!isset($_SESSION['zonas'])) {
$_SESSION['zonas'] = array(
'salaPrincipal' => serialize(new Entradas('Sala Principal', 1000)),
'compraVenta' => serialize(new Entradas('Compra-Venta', 200)),
'vip' => serialize(new Entradas('Zona Vip', 25))
);
}

$salaPrincipal = unserialize($_SESSION['zonas']['salaPrincipal']);
$compraVenta = unserialize($_SESSION['zonas']['compraVenta']);
$vip = unserialize($_SESSION['zonas']['vip']);

?>

<p>Crea una nueva zona</p>
<form action="#" method="post">
<fieldset>
Nombre de la zona: <input type="text" name="nombreZona">
Numero de entradas: <input type="number" min="1" name="tamanoPizza">
<button type="submit" value="pedir" name="nuevaZona">Crear Zona</button>
</fieldset>
</form>
<?php
$i = 1;
if (isset($_POST['nuevaZona'])) {
$i++;
$nombreZona = $_POST['nombreZona'];
$tamanoPizza = $_POST['tamanoPizza'];

$auxNombreZona = str_replace(' ', '', $nombreZona); //elimina los espacios en blanco

$_SESSION['zonas'][$auxNombreZona] = serialize(new Entradas($nombreZona, $tamanoPizza));
}

foreach ($_SESSION['zonas'] as $p) {
$auxZona = unserialize($p); //Antes de usar los objetos
echo $auxZona;
}

//En este foreach es donde intento aplicar el método venta(), pero claro, se aplica a todas las zonas que hay y yo quiero conseguir que se aplique a una en concreta.

foreach ($_SESSION['zonas'] as $p) {
$auxZona = unserialize($p);
$auxZona->venta(20);
echo $auxZona;
}

?>
</body>
</html>
  #2 (permalink)  
Antiguo 17/01/2016, 13:53
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Deserializar un objeto en concreto

De la misma forma en la que almacenas recuperas el objeto que deseas
Código PHP:
Ver original
  1. $auxNombreZona = 'lo-que-sea';
  2. $_SESSION['zonas'][$auxNombreZona]->venta(20);
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: objetos, objetos-clases, sesiones_en_php
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 05:35.