jueves, 10 de mayo de 2007

Guardar propiedades static en $_SESSION (I)

Hechas las presentaciones empezamos en esta entrada con la primera de una serie de articulos dedicados a resolver el problema de como guardar las propiedades static de las clases en PHP 5 (OJO: utilizaremos funciones que no existen en PHP4).

Como es sabido en PHP cuando se finaliza la ejecución de un script el motor PHP seria(serializa) todo el array $_SESSION, para almacenarlo en un fichero; si hay objetos en su interior también los seria, guardando el valor de todas sus propiedades (public, private o protected). El resultado sería el mismo que el que se obtiene con la función serialize():


session_start();

class Foo{
static $propiedad;

function __construct(){
self::$propiedad=4;
}
}


$_SESSION['obj']=new Foo();
$datos=serialize($_SESSION['obj']);
echo $datos;

Cuando se vuelve a ejecuta la funcion session_start() se reconstruye el array $_SESSION a partir del fichero. Problema: los cambios producidos en las propiedades static de la clase durante la ejecución anterior del script se pierden. Esto se debe a que sólo se guarda información del objeto y no de la clase.

Es posible que en futuras versiones de PHP este problema se solucione y quizá este sea el motivo más importante para buscar una solución temporal que nos permita trabajar en el paradigma que utilicemos con PHP6. De este modo podremos desarrollar un mayor potencial en nuestros diseños (podría extenderme sobre los problemas de esta limitación pero si estás leyendo esto seguramente ya te habrás enfrentado a alguno) y si en un futuro se soluciona sólo tendremos que borrar unas pocas líneas de código.

En la próxima entrada empezaré a discutir mi solución al problema, procuparé no demorarme mucho.
Ir a... [II][III][IV]

No hay comentarios: