PHP串行化与反串行化实例分析

发布时间 - 2026-01-10 22:08:19    点击率:

本文实例讲述了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运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。


# PHP  # 串行化  # 反串行化  # PHP中串行化用法示例  # 详解PHP对象的串行化与反串行化  # php面向对象全攻略 (十六) 对象的串行化  # PHP中的串行化变量和序列化对象  # PHP面向对象程序设计方法实例详解  # PHP面向对象继承用法详解(优化与减少代码重复)  # PHP面向对象程序设计高级特性详解(接口  # 继承  # 抽象类  # 析构  # 克隆等)  # PHP面向对象程序设计之命名空间与自动加载类详解  # PHP面向对象程序设计之对象生成方法详解  # PHP面向对象程序设计组合模式与装饰模式详解  # PHP入门教程之面向对象的特性分析(继承  # 多态  # 接口  # 抽象方法等)  # 程序设计  # 操作技巧  # 相关内容  # 将会  # 将其  # 感兴趣  # 给大家  # 不存在  # 报错  # 转化为  # 更多关于  # 所述  # 面向对象  # 化与  # 时再  # 运算符  # 编程技巧  # 讲述了  # sex 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel如何使用模型观察者?(Observer代码示例)  如何在Tomcat中配置并部署网站项目?  怎样使用JSON进行数据交换_它有什么限制  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel如何创建自定义Facades?(详细步骤)  如何在万网利用已有域名快速建站?  ,怎么在广州志愿者网站注册?  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Laravel如何创建自定义中间件?(Middleware代码示例)  网站制作价目表怎么做,珍爱网婚介费用多少?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  再谈Python中的字符串与字符编码(推荐)  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  如何确保西部建站助手FTP传输的安全性?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  简单实现Android文件上传  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  零基础网站服务器架设实战:轻量应用与域名解析配置指南  黑客如何通过漏洞一步步攻陷网站服务器?  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  利用JavaScript实现拖拽改变元素大小  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  Laravel如何使用Blade组件和插槽?(Component代码示例)  高端企业智能建站程序:SEO优化与响应式模板定制开发  JS经典正则表达式笔试题汇总  如何在七牛云存储上搭建网站并设置自定义域名?  新三国志曹操传主线渭水交兵攻略  android nfc常用标签读取总结  JavaScript常见的五种数组去重的方式  如何用y主机助手快速搭建网站?