一、什么是序列化
序列化是指将一个对象转换成一系列字节的过程,这些字节可以存储在文件或者数据库中,或者通过网络发送到另一个网络节点,以便在需要的时候能够恢复该对象。反序列化是指将一系列字节转换成一个对象的过程。
二、Serializable接口
Serializable接口是用来实现对象序列化的接口,它是一个标记接口,不包含任何方法,只是用来标记一个类可以被序列化。当一个类实现了Serializable接口,那么这个类的对象就可以被序列化,并且可以通过ObjectInputStream和ObjectOutputStream进行传输。
三、使用Serializable接口来自定义PHP中类的序列化
1、首先,在类定义中实现Serializable接口:
class Person implements Serializable {
// 类的属性
private $name;
private $age;
private $gender;
}
2、实现Serializable接口的serialize()和unserialize()方法:
class Person implements Serializable {
// 类的属性
private $name;
private $age;
private $gender;
//实现serialize()方法
public function serialize() {
return serialize(array(
'name' => $this->name,
'age' => $this->age,
'gender' => $this->gender,
));
}
//实现unserialize()方法
public function unserialize($data) {
$data = unserialize($data);
$this->name = $data['name'];
$this->age = $data['age'];
$this->gender = $data['gender'];
}
}
3、使用序列化:
$person = new Person();
$person->name = 'Tom';
$person->age = 20;
$person->gender = 'male';
$data = serialize($person);
4、使用反序列化:
$person = unserialize($data);
echo $person->name; // Tom
echo $person->age; // 20
echo $person->gender; // male