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, поэтому я просто не понимаю, почему я не мог просто записать массив на диск, если он сериализован.:)
1 answers
Во-первых, используйте сокращенные формы:
file_put_contents($filepath,serialize($var));
И
$var=unserialize(file_get_contents($filepath));
, А затем вывод/отладка на каждом этапе, чтобы найти, в чем проблема.