将对象另存为字符串,而不使用序列化


Save object as string, while not using serialize

为了记录错误,我想在数据库中将对象保存为字符串。我不想使用序列化,因为这会触发__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)。

编辑:它的好处是,如果你必须自动分析日志文件,你几乎可以用任何编程语言轻松地解析它;-)