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为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
PHP 过滤页面中的BOM(实现代码)
Jun 29 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
php使用MySQL保存session会话的方法
Jun 26 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
php中yii框架实例用法
Dec 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图片上传程序
2008/03/27 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
js实现放大镜特效
2017/05/18 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
python下读取公私钥做加解密实例详解
2017/03/29 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
python学生管理系统代码实现
2020/04/05 Python
Python 打印中文字符的三种方法
2018/08/14 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
通过代码实例了解Python异常本质
2020/09/16 Python
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
财务主管岗位职责
2014/02/28 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
化工工艺设计求职信
2014/06/25 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
工程主管竞聘书
2015/09/15 职场文书
Python预测分词的实现
2021/06/18 Python
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis