PHP Как сериализовать массив объектов?
-
30-09-2019 - |
Вопрос
У меня небольшой класс под названием «Call», и мне нужно хранить эти звонки в плоский файл. Я сделал другой класс под названием «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, поэтому я просто не вижу, почему я не мог просто написать массив на диск, если он сериал. :)
Решение
Во-первых, используйте формы сокращения:
file_put_contents($filepath,serialize($var));
а также
$var=unserialize(file_get_contents($filepath));
А затем вывод / отладка на каждом этапе, чтобы найти, где проблема.