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 相关文章推荐
中英文字符串翻转函数
Dec 09 PHP
php下将XML转换为数组
Jan 01 PHP
php设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
PHP反射机制用法实例
Aug 28 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
护卫神php套件 php版本升级方法(php5.5.24)
May 10 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
PHP序列化操作方法分析
Sep 28 PHP
PDO::setAttribute讲解
Jan 29 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 PHP
YII框架关联查询操作示例
Apr 29 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
解析CodeIgniter自定义配置文件
2013/06/18 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php查询ip所在地的方法
2014/12/05 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
xtree.js 代码
2007/03/13 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
详解Python多线程
2016/11/14 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
python 调试冷知识(小结)
2019/11/11 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
Django xadmin安装及使用详解
2020/10/26 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
市场营销计划书范文
2015/01/16 职场文书
2015年司法局工作总结
2015/05/22 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android