PHP OOP 对象的序列化 反序列化

基本介绍

  所谓的对象序列化是指:将一个对象转化成一个字符串,这个字符串包括 属性 属性名,属性值,属性类型,和该对象对应的类名。简单的说明就是把一个对象的书和数据类型转成字符串;

<?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);

猜你喜欢

转载自blog.csdn.net/yhwcool/article/details/81875327