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安全配置
Oct 09 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
PHP的引用详解
Feb 22 PHP
php异常处理方法实例汇总
Jun 24 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
Sep 22 PHP
PHP实现的统计数据功能详解
Dec 06 PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 PHP
在laravel中使用with实现动态添加where条件
Oct 10 PHP
Laravel修改验证提示信息为中文的示例
Oct 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 xml 入门学习资料
2011/01/01 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
php魔术变量用法实例详解
2014/11/13 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
python备份文件的脚本
2008/08/11 Python
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
jupyter notebook清除输出方式
2020/04/10 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
教师申诉制度
2014/01/29 职场文书
财务统计员岗位职责
2015/04/14 职场文书
解析MySQL binlog
2021/06/11 MySQL
mysql脏页是什么
2021/07/26 MySQL
关于python类SortedList详解
2021/09/04 Python