Persistencia de Objetos en PHP
31 Jul
Escrito por: dots3r En: PHP
Uno de los problemas con los que me he enfrentado al programar OO en PHP es la persistencia de objetos, y esque como sabemos al terminar de ejecutarse nuestro código y pasar de una página a otra todas las variables y valores se pierden. Para evitar esto existen tres formas de persistencia de datos:
- Cookies
- Pasar los valores
- Base de Datos
Ahora bien, para persistir un objeto hay que serializarlo y deserializarlo con las funciones serialize() y unserialize() respectivamente, esto con el fin de poder usar el objeto y sus propiedades tal como estaban antes de ser serializado. Cabe mencionar que al serializar un objeto no se serializan los métodos, sino los valores de sus atributos.
Al llamar a la función serialize() y unserialize estas a su vez invocan el método __sleep() y __wakeup() (si existen) de nuestra clase con las cuales podemos preparar nuestro objeto para ser serializado y deserializado.
Serialización de Objetos
class Foo {
private $a;
__constuct ($a) {
$this->a = $a;
}
public function getA () {
retun $this->a;
}
}
// Ejemplo.php
session_start();
include('ClassFoo.php');
$obj = new Foo('Hola');
$_SESSION['MiObjeto'] = serialize($obj);
// Ejemplo2.php
session_start();
include('ClassFoo.php');
$obj = unserialize($_SESSION['MiObjeto']);
echo $obj->getA(); // Imprime: Hola
*Nota: Para que los objetos sean restaurados con la función unserialize() se debe incluir la clase padre.
Tags: Persistencia, PHP, POO

