php魔术方法 sleep,[PHP] 魔术方法__get __set __sleep __wakeup的实际使用

1.__get __set是在给不可访问属性赋值和读取时,调用

2.__sleep 是在序列化对象的时候调用

3.__wakeup是在反序列化对象的时候调用

4.可以在序列化对象的时候,只序列化指定的属性,减少序列化后的大小,要把这个对象字符串存储在比如memcache的时候,比较有用

5.比如下面的例子,我只序列化了data属性,在__sleep函数里进行限制

class Test{

public $name;

protected $data=array();

public function __set($name,$value){

$this->data[$name]=$value;

}

public function __get($name){

if(!isset($this->data[$name])){

return "";

}

return $this->data[$name];

}

public function __sleep(){

echo "sleep...\r\n";

return array('data');

}

public function __wakeup(){

echo "wakeup...\r\n";

}

}

$test=new Test();

$test->name="我不会被序列化进去";

$test->bbbb="taoshihan";

$testObjectStr=serialize($test);

var_dump($testObjectStr);

var_dump(unserialize($testObjectStr));

a6e0db917b608b040c7fb168b351b866.png

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值