这篇文章主要介绍了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中串行化与反串行化的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。