从字符串PHP取消序列化类不起作用

时间:2016-10-01 20:42:07

标签: php class object serialization

我在PHP中有一个自定义类。如果我序列化类并将其保存到文本文件,我不能在以后的另一个php文件中反序列化它。当我尝试在对象上调用类函数时,我得到了

  

在非对象上调用成员函数[functioname()] ...

我在两个php文件中都包含了这个类。

PHP文件1:

$myobject = new myclass();
$temp = serialize($myobject);
file_put_contents('serializetest.txt', $temp);

PHP文件2:

$s = file_get_contents('serializetest.txt');
$newobject = unserialize($s);

为什么序列化类会正确地反序列化有什么原因吗?

更新

如果我创建一个对象并使用它的main函数,我可以反序列化不相关的已保存对象。该班级搜索刑事案件。尽管这两个对象完全不同,但是一旦我创建并使用了新对象,我就可以突然对已保存的过去对象进行反序列化。即以下工作,但如果我删除前三行代码,它就不会。

$tempcase = new Expungement();
$tempcase->searchCase('4B02305986','Public',true,false);
echo "Case Number 1: " . $tempcase->caseno;

$s = file_get_contents('serializetest.txt');
echo "Serialized Data: " . $s;
$newcase = unserialize($s);
echo "Case Number 2: " . $newcase->caseno;

1 个答案:

答案 0 :(得分:0)

您是否检查了" serializetest.txt"的内容?和$ s的价值? 文件1和文件2是否在同一目录中? 如果你有复杂的"有时候反序列化并不能很好地发挥作用。具有许多交叉引用的类。