zoukankan      html  css  js  c++  java
  • 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 ?>
  • 相关阅读:
    汇编 gdb调试
    汇编 运行错误解决办法
    binutils安装
    汇编错误
    汇编
    pthread_create()
    error2019-01-17 宏STDOUT_FILENO
    2019-01-17 跳至首行
    .NET MVC 两种视图引擎(Razor、Aspx)
    ECharts属性设置
  • 原文地址:https://www.cnblogs.com/zengbin/p/4785017.html
Copyright © 2011-2022 走看看