php как сериализовать массив объектов?


У меня есть небольшой класс под названием "Вызов", и мне нужно сохранить эти вызовы в плоский файл. Я создал еще один класс под названием "Callstorage", который содержит массив, в который я помещаю эти вызовы.

Моя проблема в том, что я хотел бы сохранить этот массив на диске, чтобы позже я мог прочитать его и получить вызовы из этого массива.

Я пытался добиться этого с помощью сериализации() и несериализации(), но они, похоже, действуют как-то странно, и часть информации получает потерян.

Вот что я делаю:

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

Может ли кто-нибудь увидеть, что я делаю не так или что. Я также пытался сериализовать и записать массивы, содержащие простые строки. Мне тоже не удалось заставить это работать.. У меня есть фон Java, поэтому я просто не понимаю, почему я не мог просто записать массив на диск, если он сериализован.:)

Author: hequ, 2010-04-21

1 answers

Во-первых, используйте сокращенные формы:

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

И

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

, А затем вывод/отладка на каждом этапе, чтобы найти, в чем проблема.

 6
Author: zaf, 2010-04-21 18:46:36