PHP串行化与反串行化实例分析


Posted in PHP onDecember 27, 2016

本文实例讲述了PHP串行化与反串行化。分享给大家供大家参考,具体如下:

对象也是一种在内存中存储的数据类型,他的寿命通常随着生成该对象的程序的终止而终止。有时候可能需要把对象的状态保存下来,需要时再将其回复。串行化是把每个对象转化为二进制字符串。

<?php
class Person {
  var $name;
  var $sex;
  var $age;
  function __construct($name = "", $sex = "男", $age = 22) {
    $this->name = $name;
    $this->sex = $sex;
    $this->age = $age;
  }
  function say() {
    echo $this->name . "在说话<br/>";
  }
  function run() {
    echo "在走路·<br/>";
  }
  //串行化的时候自动调用,成员$sex被忽略,只串行$name,$age
  function __sleep() {
    $arr = array("name","age");
    return $arr;
  }
  //反串行化时自动调用
  function __wakeup() {
    $this->age = 33;
  }
}
class Student extends Person {
  var $school;
  function __construct($name = "", $sex = "男", $age = 22,$school="") {
    parent::__construct($name,$sex,$age);
    $this->school = $school;
  }
  function study() {
    echo $this->name."正在".$this->school."学习<br/>";
  }
}
class Teacher extends Student {
  var $wage;
  function teaching() {
    echo $this->name."正在".$this->school."教学,每月工资为".$this->wage."<br/>";
  }
  //如果调用了不存在的方法,将会自动调用__call(),不会报错
  function __call($functionName,$args) {
    echo "函数名:".$functionName;
    print_r($args);
    echo "<br/>";
  }
}
$teacher1 = new Teacher("kaifu","男",22);
$teacher1->school = "edu";
$teacher1->wage = 4000;
$teacher1->say();
$teacher1->study();
$teacher1->teaching();
$teacher1->hello(1,2,3);
?>
<?php
  require_once 'Person.php';
  $teacher = new Teacher("tom","男",22);
  $teacher_str = serialize($teacher);
  file_put_contents("file.txt", $teacher_str);
  //反串行化
  $objStr = file_get_contents("file.txt");
  $t = unserialize($objStr);
  echo $t->age;
?>

串行化 file.txt :

O:7:"Teacher":2:{s:4:"name";s:3:"tom";s:3:"age";i:22;}

PHP串行化与反串行化实例分析

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php file_get_contents函数轻松采集html数据
Apr 22 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
PHP源码之explode使用说明
Aug 05 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 PHP
destoon复制新模块的方法
Jun 21 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 #PHP
iOS+PHP注册登录系统 PHP部分(上)
Dec 26 #PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 #PHP
PHP简单实现冒泡排序的方法
Dec 26 #PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 #PHP
PHP常用函数总结(180多个)
Dec 25 #PHP
详解EventDispatcher事件分发组件
Dec 25 #PHP
You might like
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
js查找节点的方法小结
2015/01/13 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
Python 操作 MySQL数据库
2020/09/18 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
面试后的英文感谢信
2014/02/01 职场文书
酒店营销策划方案
2014/02/07 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
讲解员培训方案
2014/05/04 职场文书
教育合作协议范本
2014/10/17 职场文书
整改落实自查报告
2014/11/05 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis
Java中的继承、多态以及封装
2022/04/11 Java/Android