php串行化,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 . "在说话
";

}

function run() {

echo "在走路·
";

}

//串行化的时候自动调用,成员$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."学习
";

}

}

class Teacher extends Student {

var $wage;

function teaching() {

echo $this->name."正在".$this->school."教学,每月工资为".$this->wage."
";

}

//如果调用了不存在的方法,将会自动调用__call(),不会报错

function __call($functionName,$args) {

echo "函数名:".$functionName;

print_r($args);

echo "
";

}

}

$teacher1 = new Teacher("kaifu","男",22);

$teacher1->school = "edu";

$teacher1->wage = 4000;

$teacher1->say();

$teacher1->study();

$teacher1->teaching();

$teacher1->hello(1,2,3);

?>

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;}

3db8f6b0e7468d017a9430a0a44cfc55.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值