1. 程式人生 > >PHP OOP 物件的序列化 反序列化

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