domingo, 22 de julio de 2012

Objetos en sesión en PHP

Objetos en PHP


Una buena forma de mantener información de sesiones en PHP es mediante objetos. Sin embargo, es muy común utilizar diferentes campos del arreglo $_SESSION. Este forma es muy práctica, pero si la cantidad de información es demasiada puede resultar confuso (cuantas veces he tenido que volver a mirar el código para recordar como nombre pensé que recordaría...). Un objeto es más amigable y hace que el código se pueda mantener con más facilidad.
Mantener un objecto en sesión es trivial, pero hay que tener en cuenta unos detalles.
  • Se debe serializar el objecto, sino, al recuperarlo los datos podrían no se correctos.
  • Los campos estáticos no se pueden guardar (esto es claro por el paradigma orientado a objetos, pero  a veces genera confusión)
  • Se debe incluir el archivo que define la clase antes de levantar el objeto.
A continuación, un ejemplo.


El ejemplo


Vamos a crear 2 archivos. Uno para definir la clase y otro para llamar a la clase y guardar el objeto. La idea es crear un objeto que quede en sesion, y cada vez que se actualice la pagina, imprima un valor almacenado en el objeto y aumente dicho valor.

Objeto.php
<?php
class Objeto {
        var $valor;
        function __construct(){
                $this->valor = 0;
        }
        
        /* Imprimimos y aumentamos el valor */
        public function imprimir(){
                echo $this->valor;
                $this->valor++;
        }
}
?>
index.php
<?php
/* Inclusiones del archivo */
include ("Objeto.php");
session_start();

/* Creamos o levantamos el objeto si no está en sesión */
$mi_objeto;
if (!isset($_SESSION['el_objeto']))
        $mi_objeto = new Objeto;
else
        $mi_objeto = unserialize($_SESSION['el_objeto']);

/* Imprimimos y guardamos el objeto */
$mi_objeto->imprimir();
$_SESSION['el_objeto'] = serialize($mi_objeto);
?>
Como se puede ver en el archivo index.php, el truco está en utilizar las funciones serialize y unserialize para guardar/recuperar los objetos del arreglo $_SESSION

Comentarios y sugerencias son bienvenidos!

Saludos!

No hay comentarios:

Publicar un comentario

Los comentarios son bienvenidos!!!