起序:做 Web
题的遇到的,总结总结。
一、概述
- 把对象转换为字节序列的过程称为对象的序列化;
- 把字节序列恢复为对象的过程称为对象的反序列化。
1、序列化
引用官方术语就是
序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。
应用就是将
对象、文件、数据
等多种不同的格式,由于很难统一传输和保存
,经过序列化之后就都是字节流了,就可以进行将这通用的格式传输和保存
。
2、反序列化
引用官方术语就是
反序列化 (UnSerialization)是将可以存储或传输的形式恢复为对象的状态信息的过程。
在经过
传输或保存
之后,如果再次使用,就进行反序列化还原,这样对象还是对象
,文件还是文件
。
二、示例
Person.php
<?php
class Person{
private $name = 'ANYQ';
public $age = 22;
protected $sex = 'male';
}
# 实例一个对象
$person = new Person();
# 序列化
$obj = serialize($person);
echo '序列化: ';
var_dump($obj);
echo '<br >';
# 反序列化
$obj1 = unserialize($obj);
echo '反序列化: ';
var_dump($obj1);
?>
输出内容:
分析输出的序列化内容:
O:6:"Person":3:{s:12:"Personname";s:4:"ANYQ";s:3:"age";i:22;s:6:"*sex";s:4:"male";}
序列化之后的字母代表的关键字
简写字母 | 代表的关键字 |
---|---|
a | array |
b | boolean |
d | double |
i | integer |
o | common object |
r | reference |
s | string |
C | custom object |
O | class |
N | null |
R | pointer reference |
U | unicode string |
序列化
private
、public
、protected
修饰参数会产生不同结果:可以从序列化之后看出结果。
- public 修饰属性序列化后格式:
属性名
(例如:age) - private 修饰的属性序列化后格式:
%00类名%00属性名
(例如:name) - protected 修饰的属性序列化后格式:
%00*%00属性名
(例如:sex)
如果对您有帮助,点个赞再走吧。