兆鹏和您学PHP5——PHP5中的数据串行化
来源:互联网 发布:unity3d解包 编辑:程序博客网 时间:2024/05/24 03:23
今天我和大家分享我学习PHP5学习中的心得——数据(对象)的串行化,欢迎大家批评指正。
(Why)为什么要数据串行化:也许我们在页面中,建立了一个数据结构对象,需要将该对象保存在文件系统或者通过网络传递给其他终端,那么我们需要将传递或者写入磁盘的数据进行串行化。而在重新读取被串行化数据或在其他终端接收被串行的数据时,我们需要反串行化。
(How)如何串行化:在PHP5中有两个函数,一个是serialize(object),另一个是unserialize(object),前者是将一个对象串行化,后者是将对象反串行化。特别注意的是,在对象中,可以有两个函数,其一是_sleep函数,这个函数应该返回一个数组,该数组内的元素是需要串行化的数据名,因此你可以选择该对象中哪些数据结构是需要串行化的,而某些又是可以舍弃的。同理,还有一个_wakeup函数,该函数应该给出创建序列化中丢弃数据重新创建的方法,即如果序列化时丢弃了数据ID,那么则应该在_wakeup中给出反序列化时创建id。
(Example)
<?phpclass User { public $name; public $id; function __construct() { //give user a unique ID 赋予一个不同的ID $this->id = uniqid(); } function __sleep() { //do not serialize this->id 不串行化id return(array("name")); } function __wakeup() { //give user a unique ID $this->id = uniqid(); } } //create object 建立一个对象 $u = new User; $u->name = "Leon"; //serialize it 串行化 注意不串行化id属性,id的值被抛弃 $s = serialize($u); //unserialize it 反串行化 id被重新赋值 $u2 = unserialize($s); //$u and $u2 have different IDs $u和$u2有不同的ID print_r($u); print_r($u2); ?>
谢谢支持《兆鹏与您学PHP5》
- 兆鹏和您学PHP5——PHP5中的数据串行化
- 兆鹏和您学PHP5——Joomla1.7安装和配置
- 兆鹏和你学PHP5——Joomla1.7的弊端
- PHP5的对象模型[13]--对象串行化
- PHP5
- yii2学习笔记——03php5.4和php5.3的测试
- 小议php5中的双引号和单引号
- PHP5终极安装——PHP5+IIS5+Windows2000Server
- PHP5终极安装——PHP5+IIS5+Windows2000Server
- PHP5的Simplexml—实例
- 学PHP5:session会话的使用和分析
- php5中的simplexml
- php5中的异常小结
- php5中的simplexml
- php5中的overloading
- PHP5中的引用
- php5中的魔术方法
- 浅谈PHP5中的重载
- 机器学习 线性回归(regression)、梯度下降(gradient descent)
- SQL 中的删除语句
- XML 自学笔记 Lesson3
- 分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日)
- Foundations of Software Engineering 和 Software Engineering Concepts
- 兆鹏和您学PHP5——PHP5中的数据串行化
- 形式化方法(当时我就只翻译了这一段,因为我认为还是直接读原文更好)
- API Demos 2.3 学习笔记 (15)-- Views->Radio Group
- Android 常用 mimeType 表
- getCurrentSession 与 openSession() 的区别
- 敏捷开发:60分钟掌握敏捷估计和规划
- 世界上最短的时钟代码!更短的,有木有?
- 我对架构的理解-概念篇
- 一副图片带来的声望和恶意