为了记录错误,我想在数据库中将对象保存为字符串。我不想使用序列化,因为这会触发__sleep()
-方法。那么,有没有其他方法可以在不使用serialize()
的情况下将对象保存为字符串?
class Foo {
public function __toString() {
return "Hooray";
}
}
echo new Foo;
甚至
echo var_export(new Foo, true);
你可以这样做:
ob_start();
var_dump($x);
ob_get_contents();
你可以试试这个
$string = print_r($x, true);
要在数据库中保存$string
,可以压缩字符串:
$string = gzcompress($string);
要解压缩并打印$string
,请使用:
echo '<pre>'.gzuncompress($string).'</pre>';
另一个解决方案可能是json_encode
-函数(docu)。
编辑:它的好处是,如果你必须自动分析日志文件,你几乎可以用任何编程语言轻松地解析它;-)