PHP对象序列化和非序列化工作不正常
我有3个源文件,如下所示: 第一个是source_class.phpPHP对象序列化和非序列化工作不正常,php,serialization,Php,Serialization,我有3个源文件,如下所示: 第一个是source_class.php class MacMini { public $memory = "16 Gigabytes"; public $cpu = "Intel Core i7 @ 2.6GHz"; public $HD = "1TB @ 5200 rpms"; public function mem() { return $this->memory; } public
class MacMini
{
public $memory = "16 Gigabytes";
public $cpu = "Intel Core i7 @ 2.6GHz";
public $HD = "1TB @ 5200 rpms";
public function mem()
{
return $this->memory;
}
public function centralPU()
{
return $this->cpu;
}
public function hard_drive()
{
return $this->HD;
}
}
///////////////////////////////////////////////////
第二个是serialize.php
include "source_class.php";
$myMini = new MacMini;
$myMini->cpu = "Intel Core i7 @ 3.4GHz";
$serialized = serialize($myMini);
file_put_contents("store", $serialized);
include "source_class.php";
$data = file_get_contents("store");
$unserialized = unserialize($data);
$myMini = new MacMini;
echo $myMini->cpu;
//////////////////////////////////////////////
第三个是unserialize.php
include "source_class.php";
$myMini = new MacMini;
$myMini->cpu = "Intel Core i7 @ 3.4GHz";
$serialized = serialize($myMini);
file_put_contents("store", $serialized);
include "source_class.php";
$data = file_get_contents("store");
$unserialized = unserialize($data);
$myMini = new MacMini;
echo $myMini->cpu;
它产生以下输出:
“英特尔酷睿i7@2.6GHz”
为什么,如果在serialize.php文件中更改了cpu的属性,它不会反映在非序列化中?我检查了序列化文件“store”的原始数据内容,cpu属性反映在序列化文件中,但在unserialize.php中取消序列化时,属性更改不会反映出来。为什么呢?有人能解释一下吗?问题是您创建了一个新的
$myMini
对象,并输出了这个新创建对象的cpu
属性。序列化/非序列化这样做没有意义
将unserialize.php更改为:
问题是您创建了一个新的
$myMini
对象,并输出了这个新创建对象的cpu
属性。序列化/非序列化这样做没有意义
将unserialize.php更改为:
哦,现在我明白了。我应该明白为什么。谢谢不客气。这是一种错误,因为在线购买时应将交付的硬件与订购的硬件进行比较。:)呵呵,现在我明白了。我应该明白为什么。谢谢不客气。这是一种错误,因为在线购买时应将交付的硬件与订购的硬件进行比较。:)呵呵