2010-04-21 14 views
5

Ho una piccola classe chiamata "Chiama" e ho bisogno di memorizzare queste chiamate in un file flat. Ho creato un'altra classe chiamata "CallStorage" che contiene un array in cui inserisco queste chiamate.php come serializzare array di oggetti?

Il mio problema è che vorrei memorizzare questo array sul disco in modo da poterlo leggere in seguito e ricevere le chiamate da tale array.

Ho provato a farlo usando serialize() e unserialize() ma questi sembrano agire in qualche modo strano e parte delle informazioni viene persa.

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 scrivere array che contengono stringhe semplici. Non sono riuscito a farlo funzionare .. Ho uno sfondo Java quindi non riesco a capire perché non potrei semplicemente scrivere un array sul disco se è serializzato. :)

risposta

6

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 è il problema.

+0

Sembra che il problema riguardasse le funzioni di lettura e scrittura. Quindi file_put_contents() e file_get_contents() hanno risolto il problema e ora la serializzazione funziona come mi aspettavo! Grazie! :) – hequ