博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php serialize(),unserialize()
阅读量:5281 次
发布时间:2019-06-14

本文共 1003 字,大约阅读时间需要 3 分钟。

序列化serialize()与反序列化unserialize():

序列化serialize():就是将一个变量所代表的 “内存数据”转换为“字符串”的形式,并持久保存在硬盘(写入文件中保存)上的一种做法,即,把“内存数据”转换为“字符串”然后保存到文件中;

反序列化unserialize():就是将序列化之后保存在硬盘(文件)上的“字符串数据”恢复为其原来的内存形式的变量数据的一种做法,即,把文件中保存的序列化后的“字符串数据”恢复为“内存数据”;

 

对象的序列化:1.对一个对象进行序列化,只能将其属性数据“保存起来”,而方法被忽略(方法不是数据),但是类名也能被保存起来,因此反序列化的位置只要有该类文件,就仍然可以将对象还原,即该对象的属性和方法依然可以使用;

    2.对象序列化的时候,会自动调用该对象所属类的__sleep()魔术方法;

对象的反序列化:1.对一个对象进行反序列化,其实是恢复原来保存起来的属性数据,而且,此时必须需要依赖该对象原来的所属类;

2.对象反序列化的时候,会自动调用该对象所属类的__wakeup()魔术方法;

总结:一般当我们需要将数据保存到文件中时会用到序列化,保存到数据库中一般不这样用,因为序列化和反序列化的过程其实很耗时;

 

使用实例如下:

 

name ;$obj1 ->dataIn() ;$obj1 ->next() ;/*序列化对象*/$s1 = serialize($obj1) ;//将obj1对象转换为字符串数据file_put_contents('./obj1.txt',$s1) ;//保存在硬盘(文件)中/*反序列化对象*/$s1 = file_get_contents('./obj1.txt') ;//读取硬盘上的字符串数据$obj2 = unserialize($s1) ;//将序列化后的字符串数据还原为内存数据$name2 = $obj2 ->name ;/*虽然序列化后只保存了对象的属性数据而没有保存对象的方法,但是其保存了对象的类名,*所以进行反序列化后对象内的方法任然存在,仍然可以供对象调用,反序列化的过程 * 就是对原来对象进行恢复的过程*/$obj2 ->dataIn() ;$obj2 ->next() ;

  

转载于:https://www.cnblogs.com/cblx/p/9216337.html

你可能感兴趣的文章
Learning Python 009 dict(字典)和 set
查看>>
JavaScript中随着鼠标拖拽而移动的块
查看>>
HDU 1021 一道水题
查看>>
The operation couldn’t be completed. (LaunchServicesError error 0.)
查看>>
php每天一题:strlen()与mb_strlen()的作用分别是什么
查看>>
工作中收集JSCRIPT代码之(下拉框篇)
查看>>
《转载》POI导出excel日期格式
查看>>
code异常处理
查看>>
git - 搭建最简单的git server
查看>>
会话控制
查看>>
推荐一款UI设计软件Balsamiq Mockups
查看>>
Linux crontab 命令格式与详细例子
查看>>
百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html
查看>>
游标使用
查看>>
LLBL Gen Pro 设计器使用指南
查看>>
SetCapture() & ReleaseCapture() 捕获窗口外的【松开左键事件】: WM_LBUTTONUP
查看>>
Android 设置界面的圆角选项
查看>>
百度地图api服务端根据经纬度得到地址
查看>>
根据xml生成相应的对象类
查看>>
Android StageFrightMediaScanner源码解析
查看>>