PHP OOP 物件的序列化 反序列化
阿新 • • 發佈:2018-11-22
基本介紹
所謂的物件序列化是指:將一個物件轉化成一個字串,這個字串包括 屬性 屬性名,屬性值,屬性型別,和該物件對應的類名。簡單的說明就是把一個物件的書和資料型別轉成字串;
<?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);