<?php
highlight_file(__FILE__);
class user
{
//变量
public $age=0;
public $name='';
#private $name2='leo';
#protected $age2=19;
//方法
public function print_data()
{
echo $this->name. ' is ' . $this->age.' years old<br>';
}
}
//创建对象
$usr = new user();
//赋值
$usr->age=18;
$usr->name='leo';
//输出
$usr->print_data();
//输出序列化后的内容
echo serialize($usr);
?>
结果:leo is 18 years old
O:4:"user":2:{s:3:"age";i:18;s:4:"name";s:3:"leo";}
解释:O表示对象,4表示对象名的长度,后面跟的是对象名
2里面有两个变量
s表示变量是字符串,3意思是变量有三个长度
i意思是变量赋的值是整形
值为18
<?php
highlight_file(__FILE__);
header("Content_type:text/html;charset=utf-8");
class magic_test
{
public $data1="Tony";
public $data2="Leo";
public function print_dat()
{
echo $this->data1 .$this->data2 . "<br>";
}
public function __construct()
{
echo "__construct<br>";
}
public function __destruct()
{
echo "__destruct<br>";
}
public function __wakeup()
{
echo "__wakeup<br>";
}
//__sleep() 该函数必须返回一个需要进行序列化保存的成员属性数组,并且只序列化该函数返回的这些成员属性
public function __sleep()
{
echo "__sleep<br>";
return array("data1","data2");
#return array("data");
}
}
//创建对象,调用__construct
echo "准备创建对象<br>";
$obj = new magic_test();
echo "创建对象完成<br>";
//序列化对象,调用__sleep
echo "准备序列化对象<br>";
$serialized = serialize($obj);
echo "序列化对象完成<br>";
//输出序列化之后的字符串
echo "打印序列化之后的对象";
echo "serialized: ".$serialized."<br>";
echo "打印完成<br>";
//重建对象,调用__wakeup
echo "准备反序列化对象<br>";
$obj2=unserialize($serialized);
echo "反序列化完成<br>";
//调用方法
echo "准备调用方法<br>";
$obj2->print_dat();
echo "调用结束<br>";
//反序列化后会额外在调用__destruct
//脚本结束 调用__destruct
?>