对象序列化学习笔记

需要掌握的函数

 

unserialize   serialize 

 

对象序列化的好处?

由于php对象是用数组来模拟的,因此我们把对象转为数组,就能看到这个对象所拥有的属性了。

 

class a{

    private $name;

 

    private $age;

 

    protected function getName()

    {

        return $this->name;

    }

 

}

 

class b extends a{

 

}

 

$b = new b;

print_r((array)$b);exit;

 

什么叫序列化?

所谓序列化,就是把保存在内存中的各种对象状态(属性)保存起来,并且在需要时可以还原出来。

注意:在序列化和反序列化时都需要包含类的对象的定义,不然会出现反序列化对象时,找不到该对象类的定义的错误

 

ect(__PHP_Incomplete_Class)#1 (3) { ["__PHP_Incomplete_Class_Name"]=> string(1) "b" ["name":"a":private]=> NULL ["age":"a":private]=> NULL } NULL

 

php手册上面的代码实例

 

<?php

// classa.inc:

 

  class A {

      public $one = 1;

 

      public function show_one() {

          echo $this->one;

      }

  }

 

// page1.php:

 

  include("classa.inc");

 

  $a = new A;

  $s = serialize($a);

  // 把变量$s保存起来以便文件page2.php能够读到

  file_put_contents('store', $s);

 

// page2.php:

 

  // 要正确了解序列化,必须包含下面一个文件

  include("classa.inc");

 

  $s = file_get_contents('store');

  $a = unserialize($s);

 

  // 现在可以使用对象$a里面的函数 show_one()

  $a->show_one();

?>

 

序列化,保存的对象数据都是包含改变过的属性的。也就是序列化的对象是保存特有属性值的,保存方法的方法是一致的

 

object(a)#1 (2) { ["name":"a":private]=> int(10) ["age":"a":private]=> NULL } NULL

对象序列化后,存储的只是对象的属性。类是由属性和方法组成的,而对象则是属性的结合,由同一个类生成的不同对象,拥有各自不同的属性,但共享了类的代码空间中方法区域的代码

转载于:https://my.oschina.net/u/2280651/blog/727571

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值