我的名子叫:张三性别:男我的年龄是:20
在PHP5中有两个魔术方法__sleep()方法和__wakeup()方法,在对象串行化的时候,会调用一个__sleep()方法来完成一 些睡前的事情;而在重新醒来,即由二进制串重新组成一个对象的时候,则会自动调用PHP的另一个函数__wakeup(),做一些对象醒来就要做的动作。
__sleep()函数不接受任何参数,但返回一个数组,其中包含需要串行化的属性。末被包含的属性将在串行化时被忽略,如果没有__sleep()方法,PHP将保存所有属性。
[html]view
plaincopy
<?
classPerson
{
//下面是人的成员属性
var$name;//人的名子
var$sex;//人的性别
var$age;//人的年龄
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值
function__construct($name="",$sex="",$age=""){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//这个人可以说话的方法,说出自己的属性
functionsay(){
echo"我的名子叫:".$this->name."性别:".$this->sex."我的年龄是:".$this->age."<br>";
}
//指定串行化时把返回的数组中$name和$age值串行化,忽略没在数组中的属性$sex
function__sleep(){
$arr=array("name","age");//此时,属性$sex将被删除!!!
return($arr);
}
//重新生成对象时,并重新赋值$age为40
function__wakeup(){
$this->age=40;
}
}
$p1=newPerson("张三","男",20);
//把一个对象串行化,返一个字符串,调用了__sleep()方法,忽略没在数组中的属性$sex
$p1_string=serialize($p1);
echo$p1_string."<br>";//串行化的字符串我们通常不去解析
$p2=unserialize($p1_string);//反串行化形成对象$p2重新赋值$age为40
$p2->say();
?>
上例输出值为:
[php]view
plaincopy
O:6:”Person”:2:{s:4:”name”;s:4:”张三”;s:3:”age”;i:20;}
我的名子叫:张三性别:我的年龄是:40
转自
以上就是serialize序列化和json的全文介绍,希望对您学习和使用php有所帮助.
这些内容可能对你也有帮助
更多PHP教程可查看PHP教程列表页。