stavo provando questo script php che ho scritto
<?
class ProvaPers{
private $numero;
static private $istanza=null;
private function __construct($num){
$this->numero = $num;
}
public function __destruct(){
print("chiamo la serializzazione");
$_SESSION["ProvaPers"] = serialize(self::$istanza);
}
public function getNumero(){
return($this->numero);
}
static public function istanza($num){
if(isSet( $_SESSION["ProvaPers"])){
print("deserializzo");
self::$istanza = unserialize($_SESSION["ProvaPers"]);
unset( $_SESSION["ProvaPers"] );
$_SESSION = Array();
}
elseif (self::$istanza==null){
print("creo");
self::$istanza = new ProvaPers($num);
}
return self::$istanza;
}
}
Session_start();
$a = ProvaPers::istanza("a");
$b = ProvaPers::istanza("b");
print($a->getNumero());
print($b->getNumero());
?>
prova
provandolo funziona poiché stampa "aa" ossia $a e $b puntano allo stesso oggetto. Ma andando su "prova2.php" che contiene lo stesso codice ad eccetto di:
$c = ProvaPers::istanza("c");
$d = ProvaPers::istanza("d");
print($c->getNumero());
print($d->getNumero());
il risultato in output è "cc" come se le var di sessione non ci fossero.. sapete dirmi perché?![]()