Almacenar objetos en una sesión
Voy
explicar a través de un simple ejemplo como guardar un objeto en una
sesión de php y luego recuperarlo. El ejemplo está basado en PHP 5 y
está formado por 3 archivos php:
- a.php
- Archivo que contiene la definición de la clase
- b.php
- Archivo que crea la sesión e instancia un objeto de la clase. Luego lo guarda en la variable SESSION
- clase.php
- Recupera el objeto de SESSION y lo muestra por pantalla
PHP:
-
//Archivo clase.php
-
class Clase {
-
private $precio;
-
private $cantidad;
-
-
public function __construct($p, $c){
-
$this->cantidad = $c;
-
$this->precio = $p;
-
}
-
public function getTotal(){
-
return $this->precio*$this->cantidad;
-
}
-
public function __toString(){
-
return ‘Hay ‘.$this->cantidad.‘ de articulos, que cuestan ‘.$this->precio;
-
}
-
}
PHP:
-
//Archivo a.php
-
include(‘./clase.php’);
-
$obj = new Clase(3, 3.14);
PHP:
-
//Archivo b.php
-
include(‘./clase.php’);
La salida de b.php sería
Hay 3 de articulos, que cuestan 3.14 9.42
Básicamente lo que hacemos es utilizar la función serialize para representar el objeto como un string y de esta manera guardarlo en SESSION. Luego con unserialize transformamos la cadena en objeto.
Es importante notar que en el lugar donde transformemos la cadena en
objeto debemos incluir el archivo que contenga la definición de la
clase, para que de esta manera PHP sepa como crear el objeto.
Aquí les dejo como luce el objeto cuando lo serializamos
O:5:"Clase":2:{s:15:" Clase cantidad";i:3;s:13:" Clase precio";d:3.140000000000000124344978758017532527446746826171875;}