php serialize unserialize–数据序列化与反序列化的应用

序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。

用一个类的时候都是new一下!
如果serialize 将数据序列化以后存到数据库中等 
用的时候就不再new了

反序列化以后就可以直接用了!相当于new了一下!
用例子给你说明一下!

如:

a.php

 1 <?php
 2 //声明一个类
 3 class dog {
 4     var $name;
 5     var $age;
 6     var $owner;
 7     function dog($in_name="unnamed",$in_age="0",$in_owner="unknown") {
 8         $this-&gt;name = $in_name;
 9         $this-&gt;age = $in_age;
10         $this-&gt;owner = $in_owner;
11     }
12 
13     function getage() {
14         return ($this-&gt;age * 365);
15     }
16 
17     function getowner() {
18         return ($this-&gt;owner);
19     }
20 
21     function getname() {
22         return ($this-&gt;name);
23     }
24 }
25 //实例化这个类
26 $ourfirstdog = new dog("Rover",12,"Lisa and Graham");
27 //用serialize函数将这个实例转化为一个序列化的字符串
28 $dogdisc = serialize($ourfirstdog);
29 print $dogdisc; //$ourfirstdog 已经序列化为字符串 O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}
30 /*
31 -----------------------------------------------------------------------------------------
32     在这里你可以将字符串 $dogdisc 存储到任何地方如 session,cookie,数据库,php文件
33 -----------------------------------------------------------------------------------------
34 */
35 
36 //我们在此注销这个类
37 
38 unset($ourfirstdog);
39 
40 ?>

b.php

 1 <?php
 2 //声明一个类
 3 class dog {
 4     var $name;
 5     var $age;
 6     var $owner;
 7     function dog($in_name="unnamed",$in_age="0",$in_owner="unknown") {
 8         $this-&gt;name = $in_name;
 9         $this-&gt;age = $in_age;
10         $this-&gt;owner = $in_owner;
11     }
12 
13     function getage() {
14         return ($this-&gt;age * 365);
15     }
16 
17     function getowner() {
18         return ($this-&gt;owner);
19     }
20 
21     function getname() {
22         return ($this-&gt;name);
23     }
24 }
25 /*    还原操作   */
26 /*
27 -----------------------------------------------------------------------------------------
28     在这里将字符串 $dogdisc 从你存储的地方读出来如 session,cookie,数据库,php文件
29 -----------------------------------------------------------------------------------------
30 */
31 
32 $dogdisc='O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}';
33 //我们在这里用 unserialize() 还原已经序列化的对象
34 $pet = unserialize($dogdisc); //此时的 $pet 已经是前面的 $ourfirstdog 对象了
35 //获得年龄和名字属性
36 $old = $pet-&gt;getage();
37 $name = $pet-&gt;getname();
38 //这个类此时无需实例化可以继续使用,而且属性和值都是保持在序列化之前的状态
39 print "Our first dog is called $name and is $old days old&lt;br&gt;";
40 
41 ?>
原文地址:https://www.cnblogs.com/zengbin/p/4785017.html