序列化serialize与反序列化unserialize

有利于存储和传递value(除了resource类型外),却不会丢失其原有类型和结构。

serialize序列化时会调用魔术方法__sleep();

unserialize反序列化时会调用魔术方法__wakeup();

序列化 数组:

$arr = ['name'=>'Tony','age'=>29,'sex'=>'male'];
$s = serialize($arr);
echo '序列化数组:';
var_dump($s);
echo '反序列化数组:';
var_dump(unserialize($s));

  输出

E:\Project\self\demo\serialize\demo.php:8:string 'a:3:{s:4:"name";s:4:"Tony";s:3:"age";i:29;s:3:"sex";s:4:"male";}' (length=64)
反序列化数组:
E:\Project\self\demo\serialize\demo.php:10:
array (size=3)
  'name' => string 'Tony' (length=4)
  'age' => int 29
  'sex' => string 'male' (length=4)

序列化对象:

新建一个对象:

class A{
    public $one = 1;
    public function show_one(){
        echo $this->one;
    }
}
require_once('class_a.php');
$s = serialize(new A);
//把变量$s保存起来以便其他地方能够读取到
file_put_contents('store', $s);
require_once('class_a.php');
$s = file_get_contents('store');
$a = unserialize($s);
var_dump($s);
var_dump($a);
//现在使用对象$a里面的函数
$a->show_one();

  输出

E:\Project\self\demo\serialize\demo.php:18:string 'O:1:"A":1:{s:3:"one";i:1;}' (length=26)
E:\Project\self\demo\serialize\demo.php:19:
object(A)[1]
  public 'one' => int 1
1

猜你喜欢

转载自www.cnblogs.com/two-bees/p/10606134.html