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学习笔记 面向对象的构造与析构方法
Jun 13 PHP
邮箱正则表达式实现代码(针对php)
Jun 21 PHP
php 启动报错如何解决
Jan 17 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
Nov 05 PHP
PHP面向对象精要总结
Nov 07 PHP
php判断文件夹是否存在不存在则创建
Apr 09 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
cakephp常见知识点汇总
Feb 24 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 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可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
php自动加载代码实例详解
2021/02/26 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
Angular路由简单学习
2016/12/26 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
Python多线程编程(五):死锁的形成
2015/04/05 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
深入理解Python3 内置函数大全
2017/11/23 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
django Admin文档生成器使用详解
2019/07/22 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
一些PHP的面试题
2015/05/06 面试题
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
2013年学期结束动员演讲稿
2014/01/07 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
网络营销计划
2015/01/17 职场文书
2014年底个人工作总结
2015/03/10 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
swagger如何返回map字段注释
2021/07/03 Java/Android
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server