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&amp;&amp;mysql)四
Oct 09 PHP
PHP 基于文件头的文件类型验证类函数
May 01 PHP
基于php设计模式中单例模式的应用分析
May 15 PHP
php防注入及开发安全详细解析
Aug 09 PHP
php实例分享之mysql数据备份
May 19 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
php字符串截取函数用法分析
Nov 25 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
python实现自动发送邮件
2018/06/20 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
解决Python对齐文本字符串问题
2019/08/28 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
出国导师推荐信
2014/01/16 职场文书
我的理想演讲稿
2014/04/30 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
团员自我评价范文
2015/03/10 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
观后感的写法
2015/06/19 职场文书
何时使用Map来代替普通的JS对象
2021/04/29 Javascript
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers
Fluentd搭建日志收集服务
2022/09/23 Servers