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 相关文章推荐
JAVA/JSP学习系列之六
Oct 09 PHP
PHP实现的功能是显示8条基色色带
Oct 09 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
php中require和require_once的区别说明
Feb 27 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
一波PHP中cURL库的常见用法代码示例
May 06 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
php编译安装php-amq扩展简明教程
Jun 25 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
如何优雅的使用 laravel 的 validator验证方法
Nov 11 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
Jul 08 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
laravel学习教程之关联模型
2016/07/30 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
Vue 自定义动态组件实例详解
2018/03/28 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
通息工程毕业生自荐信
2013/10/16 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
出租车拒载检讨书
2015/01/28 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
讲解MySQL增删改操作
2022/05/06 MySQL