Supponiamo di avere una classe chiamata MyClass, con una variabile membro 'var'. E il seguente scenario:
echo '<pre>';
$x=new MyClass;
$y=new MyClass;
$x->var=$y;
echo 'Checking for $x->var===$y :'.($x->var===$y).PHP_EOL; // outputs 1
$xs=serialize($x);
$ys=serialize($y);
$xsu=unserialize($xs);
$ysu=unserialize($ys);
echo 'Checking for $xsu->var===$ysu :'.($xsu->var===$ysu); //outputs nothing
Dopo la serializzazione e la de-serializzazione, le istanze sono diverse.
Il runtime di php crea un oggetto diverso e lo rende non serializzato. Non dovrebbe guardare qualche hash dell'oggetto e restituire il riferimento allo stesso oggetto (dopo la de-serializzazione una volta).
Il mio qs. è quali potrebbero essere gli svantaggi?
Modifica:
Ho bisogno di riferimenti identici a causa del seguente motivo dichiarato in 2 punti: (Correggere se ho torto)
Gli oggetti possono essere serializzati su disco in un singolo file per progetto di oggetto. 1. Il loro nome file può essere restituito come stringa di riferimento dal metodo serialize (). Durante la deserializzazione, il file può essere letto dal disco e l'oggetto manipolato.
2. Quindi, ora se ottengo riferimenti identici, le eventuali modifiche apportate a una si rifletteranno nell'altra, il che non potrebbe essere il caso se i riferimenti sono diversi. Alla fine, la singola entità potrebbe essere salvata sul disco.