编程10000问 2019-03-27
代码如下:
<? 
class Person{ 
//下面是人的成员属性 
var $name; //人的名子 
var $sex; //人的性别 
var $age; //人的年龄 
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值 
function __construct($name="", $sex="", $age=""){ 
$this->name=$name; 
$this->sex=$sex; 
$this->age=$age; 
} 
//这个人可以说话的方法, 说出自己的属性 
function say() { 
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; 
} 
} 
$p1=new Person("张三", "男", 20); 
$p1_string=serialize($p1); //把一个对象串行化,返一个字符串 
echo $p1_string."<br>"; //串行化的字符串我们通常不去解析 
$p2=unserialize($p1_string); //把一个串行化的字符串反串行化形成对象$p2 
$p2->say(); 
?> 代码如下:
<? 
class Person{ 
//下面是人的成员属性 
var $name; //人的名子 
var $sex; //人的性别 
var $age; //人的年龄 
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值 
function __construct($name="", $sex="", $age=""){ 
$this->name=$name; 
$this->sex=$sex; 
$this->age=$age; 
} 
//这个人可以说话的方法, 说出自己的属性function say() 
{ 
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; 
} 
//指定串行化时把返回的数组中$name和$age值串行化,忽略没在数组中的属性$sex 
function __sleep() { 
$arr=array("name", "age"); 
return($arr); 
} 
//重新生成对象时,并重新赋值$age为40 
function __wakeup() { 
$this->age = 40; 
} 
} 
$p1=new Person("张三", "男", 20); 
//把一个对象串行化,返一个字符串,调用了__sleep()方法,忽略没在数组中的属性$sex 
$p1_string=serialize($p1); 
echo $p1_string."<br>"; //串行化的字符串我们通常不去解析 
$p2=unserialize($p1_string); //反串行化形成对象$p2重新赋值$age为40 
$p2->say(); 
?>