基本介绍
所谓的对象序列化是指:将一个对象转化成一个字符串,这个字符串包括 属性 属性名,属性值,属性类型,和该对象对应的类名。简单的说明就是把一个对象的书和数据类型转成字符串;
<?php
header("content-type:text/html;charset=utf-8");
class Cat {
public $name;
public $age;
public $color;
public function __construct($name,$age,$color)
{
$this->name = $name;
$this->age = $age;
$this->color=$color;
}
}
$cat = new Cat("小花",12,"白色");
file_put_contents("D:cat.txt",serialize($cat));
echo "保存成功--------------".serialize($cat).'<br>';
echo "读取D:cat.txt 文件 file_get_contents<br>";
$cat_obj_str = file_get_contents("D:cat.txt");
echo "<br> 读取成功".$cat_obj_str;
echo '<h3>反序列化 unserialize</h3>';
$cat_obj = unserialize($cat_obj_str);
var_dump($cat_obj);
结果:
file_put_contents($filename,$contents);将文件保存;
file_get_contents($filename); 读取文件信息
序列化,反序列化细节;
魔术方法__sleep
<?php
header("content-type:text/html;charset=utf-8");
class Cat {
public $name;
public $age;
public $sex;
public $lover;
public function __construct($name,$age,$sex,$lover)
{
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
$this->lover = $lover;
}
public function __sleep()
{
// 在这里决定哪些被序列化
echo "<br>序列化调用";
return array("name","age","lover");
}
public function __wakeup()
{
echo "<br> 反序列化调用";
}
}
$cat = new Cat("小雪","12","女","猪");
$cat_str = serialize($cat);
echo $cat_str;
// 反序列化
$cat_obj = unserialize($cat_str);
var_dump($cat_obj);