PHP 序列化和反序列化

<?php
/*
当一个对象被串行化,PHP会调用__sleep方法(如果存在),在反串行化一个对象后,php会调用__wakeup方法,这两个方法都不接受参数
__sleep方法必须返回一个数组,包含需要串行化的属性,php会抛弃其他属性的值,
如果没有__sleep方法,php将保存所有属性。

如果使用会话并使用了session_register()来注册对象,这些对象会在每个PHP页面
结束时被自动序列化,并在接下来的每个页面中自动解序列化,也就是说对象一旦成为
会话的一部分,就能在任何页面中出现。
*/


class Persion
{
public $name;
public $id;


function __construct()
{//赋予一个不同的ID
$this->id = uniqid();
}


function __sleep()
{
//不串行化 id
return (array("name"));


//串行化 
return (array("name","id"));
}


function __wakeup()
{
//赋予一个不同的id
$this->id = uniqid();
}
}


$u = new Persion;
$u->name = 'Lily';
echo'<pre>'; print_r($u); echo '</pre>';
$s = serialize($u);
echo'<pre>'; print_r($s); echo '</pre>';
$u2 = unserialize($s);

echo'<pre>'; print_r($u2); echo '</pre>';



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值