php come serializzare array di oggetti?
-
30-09-2019 - |
Domanda
Ho piccola classe chiamata 'Call' e ho bisogno di memorizzare queste chiamate in un file flat. Ho fatto un'altra classe chiamata 'CallStorage', che contiene un array in cui ho messo queste chiamate in.
Il mio problema è che vorrei per memorizzare questo array su disco in modo da poter poi leggere di nuovo e ottenere le chiamate da tale matrice.
ho cercato di farlo con serialize () e unserialize (), ma questi sembra agire in qualche modo strano e parte delle informazioni si perde.
Questo è quello che sto facendo:
//write array to disk
$filename = $path . 'calls-' . $today;
$serialized = serialize($this->array);
$fp = fopen($filename, 'a');
fwrite($fp, $serialized);
fclose($fp);
//read array from serialized file
$filename = $path . 'calls-' . $today;
if (file_exists($filename)) {
$handle = fopen($filename, 'r');
$contents = fread($handle, filesize($filename));
fclose($handle);
$unserialized = unserialize($contents);
$this->setArray($unserialized);
}
Qualcuno può vedere quello che sto facendo male, o che cosa. Ho anche provato a serializzare e array di scrittura che contiene le stringhe semplici. Non sono riuscito a ottenere che il lavoro sia .. Ho una formazione Java quindi non riesco proprio a capire perché non ho potuto solo scrivere un array per dischi se è serializzato. :)
Soluzione
In primo luogo, utilizzare i moduli di stenografia:
file_put_contents($filepath,serialize($var));
e
$var=unserialize(file_get_contents($filepath));
E poi uscita / debug in ogni fase per trovare dove sia il problema.