创建对象
class Staff
{
public $name ;
public $age;
public $salary;
public function const ruct ($name , $age , $salary=0)
{
$this->name = $name;
$this->age = $age;
$this->salary = $salary;
}
}
$obj1 = new Staff( ' peter' ,28, 5000);
//序列化之前对象属性
echo
' 我的姓名是: ' .$obj1->name , '年龄是: ' .$obj1->age, '工资是:' . $obj1->salary;
输出结果:
我的姓名是:peter年龄是:28工资是:5000
使用 serialize()方法序列化对象(用于保存和传输)
$objStr = serialize($obj1);
echo ' 序列化的对象: ' . $objStr;
输出结果:
序列化的对象:O:5:"Staff":3:
{s:4:" name";s:5:' peter' ;S:3:' 'age' ;i:28;s:6: salary :;:5000;}
在类中定义魔术方法_ sleep(),序列化时会自动调用该方法将指定属性序列化。
public function_ sleep()
{
//将允许序列化的对象属性放在一个数组中返回
return ['name', 'age'];
}
echo ' 序列化的对象: ' . $objStr;
输出结果:
序列化的对象:O:5:"Staff*:2:
{s:4:' 'name' ;s:5:' 'peter ';s:3:' 'age ";i:28;}
//反序列化
$obj2 = unserialize($objStr) ;
echo ' 我的姓名是: ' . $obj1->name, '年龄是: '.$obj1->age;
输出结果:
我的姓名是:peter年龄是:28
在类中定义魔术方法_ wakeup( ) ,在反序列化时自动调用该方法修改对象属性。
public function_ wakeup( )
{
$this->age = 48;
}
输出结果:
我的姓名是:peter年龄是:48
|