标签:
序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
用一个类的时候都是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->name = $in_name; 9 $this->age = $in_age; 10 $this->owner = $in_owner; 11 } 12 13 function getage() { 14 return ($this->age * 365); 15 } 16 17 function getowner() { 18 return ($this->owner); 19 } 20 21 function getname() { 22 return ($this->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->name = $in_name; 9 $this->age = $in_age; 10 $this->owner = $in_owner; 11 } 12 13 function getage() { 14 return ($this->age * 365); 15 } 16 17 function getowner() { 18 return ($this->owner); 19 } 20 21 function getname() { 22 return ($this->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->getage(); 37 $name = $pet->getname(); 38 //这个类此时无需实例化可以继续使用,而且属性和值都是保持在序列化之前的状态 39 print "Our first dog is called $name and is $old days old<br>"; 40 41 ?>
php serialize unserialize–数据序列化与反序列化的应用
标签:
原文地址:http://www.cnblogs.com/zengbin/p/4785017.html