2010-04-21 14 views
5

Ich habe kleine Klasse namens "Call" und ich muss diese Anrufe in eine flache Datei speichern. Ich habe eine andere Klasse mit der Bezeichnung 'CallStorage' eingerichtet, die ein Array enthält, in das ich diese Anrufe einfüge.PHP, wie Array von Objekten zu serialisieren?

Mein Problem ist, dass ich dieses Array auf der Festplatte speichern möchte, damit ich es später wieder lesen und die Aufrufe von diesem Array abrufen konnte.

Ich habe versucht, dies mit serialize() und unserialize() zu erreichen, aber diese scheint irgendwie seltsam zu handeln und ein Teil der Informationen geht verloren.

Das ist, was ich tue:

//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); 
} 

Kann jemand sehen, was mache ich falsch, oder was. Ich habe auch versucht, Arrays, die einfache Zeichenfolgen enthalten, zu serialisieren und zu schreiben. Ich habe es nicht geschafft, das auch zu funktionieren. Ich habe einen Java-Hintergrund, deshalb kann ich einfach nicht sehen, warum ich nicht einfach ein Array auf die Festplatte schreiben konnte, wenn es serialisiert ist. :)

Antwort

6

Zuerst benutzen Sie die Kurzformen:

file_put_contents($filepath,serialize($var)); 

und

$var=unserialize(file_get_contents($filepath)); 

Und dann Ausgabe/debug in jeder Phase zu finden, wo das Problem ist.

+0

Scheint wie das Problem in meinen Lese- und Schreibfunktionen war. So haben file_put_contents() und file_get_contents() das Problem gelöst und nun funktioniert das Serialisieren wie erwartet! Vielen Dank! :) – hequ