Può essere utile avere delle classi di dati persistenti attraverso più pagine php.
Per ottenere una funzionalità di questo genere utilizzeremo una classe “radice” che gestirà l’inizializzazione e la memorizzazione della nostra classe
my = new myClass();
if(isset($_SESSION["myclass"]))
$this->my = unserialize($_SESSION["myclass"]);
}
function __destruct() {
echo "
salvo in sessione con stringa: ".$this->my->getString()."
";
$_SESSION["myclass"] = serialize($this->my);
}
}
?>
La classe che ci interessa utilizzare e che deve essere quindi mantenuta tra le varie pagine php sarà una cosa del genere:
contatore = 1;
}
function setString($v) {
$this->stringa = $v;
$this->contatore++;
}
function getString() {
$this->contatore++;
return $this->stringa;
}
function accessi() {
echo "
Accessi alla stringa: ".$this->contatore."
";
}
}
?>
A questo punto non ci rimane che creare due pagine diverse che utilizzeranno la nostra classe radice e la nostra classe con i dati:
Inizio Pag1
";
$r = new root();
$r->my->setString("pippo");
echo "
Stringa: ".$r->my->getString();
$r->my->setString("pippo2");
echo "
Stringa: ".$r->my->getString();
$r->my->setString("yooooo");
echo "
Stringa: ".$r->my->getString();
$r->my->accessi();
?>
ed una seconda pagina che accederà agli stessi dati:
Inizio Pag2
";
$r = new root();
echo "
Stringa: ".$r->my->getString();
$r->my->accessi();
?>
Come mi è stato suggerito si potrebbe utilizzare redis (http://redis.io/) ed il client php (https://github.com/nrk/predis) per la memorizzazione della serializzazione della classe.
Altra interessante nota è che, date le caratteristiche di riflessione delle classi php, si potrebbe pensare di analizzare a runtime la classe stessa e salvarne (magari su redis) i dati importanti