我有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;
}
}
Run Code Online (Sandbox Code Playgroud)
////////////////////////////////////////////////// /
第二个是serialize.php
include "source_class.php";
$myMini = new MacMini;
$myMini->cpu = "Intel Core i7 @ 3.4GHz";
$serialized = serialize($myMini);
file_put_contents("store", $serialized);
Run Code Online (Sandbox Code Playgroud)
//////////////////////////////////////////////
第三个是unserialize.php
include "source_class.php";
$data = file_get_contents("store");
$unserialized = unserialize($data);
$myMini = new MacMini;
echo $myMini->cpu;
Run Code Online (Sandbox Code Playgroud)
它产生以下输出:"Intel Core i7 @ 2.6GHz"
为什么,如果在serialize.php文件中更改了cpu的属性,它是否反映在反序列化中?我检查了序列化文件的原始数据内容"store",并且cpu属性反映在序列化文件中,但是当它在unserialize.php中反序列化时,不会反映属性更改.这是为什么?谁能解释一下?
问题是您创建了一个新$myMini对象并输出了cpu这个新创建的对象的正确性.序列化/反序列化没有这种意义.
将unserialize.php更改为:
include "source_class.php";
$data = file_get_contents("store");
$myMini = unserialize($data);
echo $myMini->cpu;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |