PHPオブジェクトの配列をシリアル化する方法は?
-
30-09-2019 - |
質問
「Call」と呼ばれる小さなクラスがあり、これらの呼び出しをフラットファイルに保存する必要があります。 「CallStorage」と呼ばれる別のクラスを作成しました。このクラスには、これらの呼び出しを配置する配列が含まれています。
私の問題は、この配列をディスクに保存して、後で読み戻してその配列から通話を得ることができることです。
serialize()とunserialize()を使用してこれを達成しようとしましたが、これらは何らかの形で奇妙に振る舞い、情報の一部が失われるようです。
これが私がしていることです:
//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));
次に、各段階で出力/デバッグして、問題がどこにあるかを見つけます。
所属していません StackOverflow