Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP对象序列化和非序列化工作不正常_Php_Serialization - Fatal编程技术网

PHP对象序列化和非序列化工作不正常

PHP对象序列化和非序列化工作不正常,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

我有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 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更改为:


哦,现在我明白了。我应该明白为什么。谢谢不客气。这是一种错误,因为在线购买时应将交付的硬件与订购的硬件进行比较。:)呵呵,现在我明白了。我应该明白为什么。谢谢不客气。这是一种错误,因为在线购买时应将交付的硬件与订购的硬件进行比较。:)呵呵