php 串行化数据,php中对象的串行化

我们大家有知道PHP串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据。文章这里就PHP串行化为大家详细的介绍。你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行。为了这样的目的,PHP会自动寻找__sleep和__wakeup方法。

当一个对象被PHP串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sleep方法必须返回一个数组,包含需要串行化的属性. PHP会抛弃其它属性的值。如果没有__sleep方法,PHP将保存所有属性。

/*

*

* @Authors peng--jun

* @Email 1098325951@qq.com

* @Date 2016-01-23 14:40:38

* @Link http://www.cnblogs.com/xs-yqz/

* @version $Id$

==========================================

*/

header("Content-type: text/html; charset=UTF-8");

class Person{

private $name;

private $sex;

private $age;

function __construct($name,$age,$sex){

$this->name = $name;

$this->age = $age;

$this->sex = $sex;

}

function say(){

echo "我的名字:".$this->name."性别为: ".$this->sex."年龄为:".$this->age;

}

//在类中添加此方法,在串行化的时候自动调用并返回数组

function __sleep(){

$arr = array("name","age");//数组中的成员$name和$age将被串行化,成员$sex则将被忽略。

return($arr);//使用__sleep()方法的时候必须返回一个数组。

}

//在反串行化对象时自动调用该方法,没有参数也没有返回值

function __wakeup(){

$this->age = ;//在重新组织对象的时候,为新对象中的$age属性重新赋值

}

}

$person1 = new Person("张三",,"男");

$person1_string = serialize($person1);

echo $person1_string."
";

//反串行化对象,并自动调用了__wakeup()方法重新为独享中的age赋值。

$person2 = unserialize($person1_string);

$person2->say();

?>

输出的结果为:

O::"Person"::{s::"Personname";s::"张三";s::"Personage";i:;}

我的名字:张三性别为: 年龄为:

2.将串行化的字符串保存到文件中,从文件中读取字符串,反串性化实例。

header("Content-type: text/html; charset=UTF-8");

class Person{

private $name;

private $sex;

private $age;

function __construct($name,$age,$sex){

$this->name = $name;

$this->age = $age;

$this->sex = $sex;

}

function say(){

echo "我的名字:".$this->name."性别为: ".$this->sex."年龄为:".$this->age;

}

}

$person1 = new Person("张三",,"男");

$person1_string = serialize($person1);

file_put_contents("file.txt", $person1_string);

header("Content-type: text/html; charset=UTF-8");

class Person{

private $name;

private $sex;

private $age;

function __construct($name,$age,$sex){

$this->name = $name;

$this->age = $age;

$this->sex = $sex;

}

function say(){

echo "我的名字:".$this->name." 性别为:".$this->sex." 年龄为:".$this->age;

}

}

$person2_string = file_get_contents("file.txt");

$person2 = unserialize($person2_string);//反串性化重新形成对象$person2.

$person2->say();

?>

Java 对象的串行化(Serialization)

1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象的这种能记录自己的状态以便将来再生的能力.叫作对象的持续性(pe ...

JavaEE 对象的串行化(Serialization)

什么情况下需要序列化 a)当你想把的内存中的对象写入到硬盘的时候:b)当你想用套接字在网络上传送对象的时候:c)当你想通过RMI传输对象的时候:再稍微解释一下:a)比如说你的内存不够用了,那计算机就要 ...

PHP面向对象04_串行化

oop04复习 2014-9-3 10:48:45 要点: --1.克隆对象 --2.__toString( ) --3. __call( ) --4.自动加载类 --5.对象串行化 1.克隆对象以及 ...

MFC如何生成一个可串行化的类

一.MFC允许对象在程序运行的整个过程中持久化的串行化机制 (1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程. (2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构 ...

VC++ MFC如何生成一个可串行化的类

一.MFC允许对象在程序运行的整个过程中持久化的串行化机制(1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程.(2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构)的 ...

Hadoop基础-Apache Avro串行化的与反串行化

Hadoop基础-Apache Avro串行化的与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Apache Avro简介 1>.Apache Avro的来源 ...

MFC【6】文件I/O和串行化

文件输入和输出(I/O)服务是所有操作系统的主要工作.Microsoft Windows提供了各种API函数用来读.写和操作磁盘文件.MFC将这些桉树和CFile类融合在面对对象的模型里.其中CFil ...

java的串行化

参考博客:Java 对象的串行化(Serialization) 1,什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象 ...

关于ORACLE的串行化隔离级别--来自ORACLE概念手册

为了描述同时执行的多个事务如何实现数据一致性,数据库研究人员定义了被 称为串行化处理(serializability)的事务隔离模型(transaction  isolation model).当所有 ...

随机推荐

l段子

段子简介 L段子起源.L段子是开发者根据市场调查, 用户可在等候列车,飞机,或在公交车上无 聊之余使用本应用.打发无聊的时间,分为段 子,图片,活动和个人中心,用户可根据自己 喜好进入不同的区域.段子 ...

BZOJ3249 : [ioi2013]game

线段树套Treap 外层的线段树需要动态开节点 内层Treap需要注意的是,相同y坐标的点不一定是同一个点,所以需要再次离散 空间$O(n\log n)$ 时间$O(n\log^2n)$ #inclu ...

Spring 中JCA CCI分析--转载

转载地址:http://blog.csdn.net/a154832918/article/details/6790612 J2EE提供JCA(Java Connector Architecture)规 ...

WinForm RDLC SubReport Step by step

最近在做的一个PO管理系统,因为要用到订单打印,没有用水晶报表,直接使用VS2010的Reporting.参考了网上的一些文章,但因为找到的数据是用于WebForm的,适配到WinForm有点区别,竟 ...

AsyncTask总结(经典,附带源码)

一.整体工程图 二.MainActivity.java package com.jltxgcy.asynctaskdemo; import android.app.Activity; import a ...

Hibernate写配置文件无提示信息解决

把Hibernate的相关jar包引入工程后,在配置hibernate.cfg.xml时没有提示信息,对于开发人员来说,那么多标签,标签有那么多属性,全部都记住显然是不可能的,遇到这种情况是很头疼的事 ...

第一篇 Flask初始

Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用 ...

Json字符串转map集合

第一步:在pom.xml中添加依赖; com.alibabaf ...

JS之document.cookie详解以及$.cookie的使用

什么是cookie? cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie ...

thinkpad e系列 装win7过程

电脑买回来时是win8系统,但是卡顿的厉害,装成win7,win8装win7流程还是比较复杂,后来又装成xp,现在又改成win7,记录一下装win7 的过程 我是用光盘安装的系统 第一步:进入boss ...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值