<?php
//定义一个类
class Human{
//定义一个public的属性
public $country = "中国";
//定义一个protected的属性
protected $name = "小李";
//定义一个private的属性
private $age = "18";
//定义一个public的方法
public function getCountry(){
echo $this->country;
//在类中public定义的方法中调用protected定义的方法
$this->getName();
//在类中public定义的方法中调用private定义的方法
$this->getAge();
}
//定义一个protected的方法
protected function getName(){
//在类中访问protected定义的属性
echo $this->name;
}
//定义一个private的方法
private function getAge(){
//在类中访问private定义的属性
echo $this->age."<br>";
}
//定义__sleep()函数
function __sleep(){
return array("name","age");
}
//定义__wakeup()函数
function __wakeup(){
//重新生成对象时,改变属性
$this->name = "小王";
$this->age = 19;
}
}
//实例化Human类
$test = new Human();
//序列化$test对象
$demo = serialize($test);//序列化后的字符保存在$demo变量中
echo "序列化后的对象:<br>";
echo $demo;
echo "<br>反序列化:<br>";
$newTest = unserialize($demo);
$newTest->getCountry();
?>结果为:
序列化后的对象:
O:5:"Human":2:{s:7:"*name";s:4:"小李";s:10:"Humanage";s:2:"18";}
反序列化:
中国小王19
<?php
//定义一个类
class Human{
//定义一个public的属性
public $country = "中国";
//定义一个protected的属性
protected $name = "小李";
//定义一个private的属性
private $age = "18";
//定义一个public的方法
public function getCountry(){
echo $this->country;
//在类中public定义的方法中调用protected定义的方法
$this->getName();
//在类中public定义的方法中调用private定义的方法
$this->getAge();
}
//定义一个protected的方法
protected function getName(){
//在类中访问protected定义的属性
echo $this->name;
}
//定义一个private的方法
private function getAge(){
//在类中访问private定义的属性
echo $this->age."<br>";
}
}
//实例化Human类
$test = new Human();
//序列化$test对象
$demo = serialize($test);//序列化后的字符保存在$demo变量中
echo "序列化后的对象:<br>";
echo $demo;
echo "<br>反序列化:<br>";
$newTest = unserialize($demo);
$newTest->getCountry();
?>结果为:
序列化后的对象:
O:5:"Human":3:{s:7:"country";s:4:"中国";s:7:"*name";s:4:"小李";s:10:"Humanage";s:2:"18";}
反序列化:
中国小李18有点不懂,上面那个结果为什么没有输出contury明明刚开始的序列化是一样的,到最后为什么 会不一样呢???
请各位前辈指教一下呀