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 相关文章推荐
基于mysql的bbs设计(五)
Oct 09 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
分享PHP header函数使用教程
Sep 05 PHP
php curl_init函数用法
Jan 31 PHP
PHP判断是否有Get参数的方法
May 05 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
PHP的Trait机制原理与用法分析
Oct 18 PHP
laravel框架创建授权策略实例分析
Nov 22 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 allow_url_include的应用和解释
2010/04/22 PHP
php邮件发送,php发送邮件的类
2011/03/24 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
浅析python中的分片与截断序列
2016/08/09 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python实现AES加密与解密
2019/03/28 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript