PHP面向对象之序列化与反序列化

序列化与反序列化

  • 概念

    • 在PHP中,数组和对象无法保存
    • 如果需要保存就要将数组或对象转换成一个序列
  • 序列化 (serialize)

    • 将数组或对象转换成一个序列
  • 反序列化 (unserialize)

    • 将序列化的字符串转换成数组或对象

数组的序列化与反序列化

# 数组的序列化
<?php
$stu= ['南京','泰州','盐城'];
$str= serialize($stu);		//序列化
file_put_contents('./stu.txt', $str);
?>
# 数组的反序列化
<?php
$str= file_get_contents('./stu.txt');
$stu= unserialize($str);		//反序列化
print_r($stu);
?>

对象的序列化与反序列化

  • 注意
    • 对象的反序列化需要有类的参与
    • 如果没有类在反序列化时候无法确定类
# 对象的序列化
<?php
class Student {
	public $name;
	protected $sex;
	private $add;
	public function __construct($name, $sex, $add) {
		$this->name= $name;
		$this->sex= $sex;
		$this->add= $add;
	}
}
$stu= new Student('Sunny', '男', '北京');
$str= serialize($stu);
file_put_contents('./stu.txt', $str);
?>
# 对象的反序列化
<?php
$str= file_get_contents('./stu.txt');
$stu= unserialize($str);
echo '<pre>';
var_dump($stu);
echo '</pre>';
if(!is_string($stu)){
	echo gettype($stu).'<br>';
}
foreach($stu as $key=>$value){
	echo $key.': '.$value.'<br>';
}
?>
posted @ 2020-12-10 20:22  wing1377  阅读(82)  评论(0编辑  收藏  举报