[PHP] 魔术方法__get __set __sleep __wakeup的实际使用
2023-02-18 15:46:53 时间
1.__get __set是在给不可访问属性赋值和读取时,调用
2.__sleep 是在序列化对象的时候调用
3.__wakeup是在反序列化对象的时候调用
4.可以在序列化对象的时候 , 只序列化指定的属性 , 减少序列化后的大小, 要把这个对象字符串存储在比如memcache的时候 ,比较有用
5.比如下面的例子 , 我只序列化了data属性 , 在__sleep函数里进行限制
<?php 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));
相关文章
- .Net ADO拼接带参数的SQL语句
- 提高数据库的查询速率及其sql语句的优化问题
- 学无止境,坚持无价!
- 首款通过! 机器学习服务活体检测算法荣获CFCA权威安全认证
- Web应用怎样获取Access Token?
- HMS Core 3D流体仿真技术,打造移动端PC级流体动效
- 如何优化大场景实时渲染?HMS Core 3D Engine这么做
- 【FAQ】申请Health Kit权限的常见问题及解答
- 数据价值深度挖掘,分析服务上线“探索”能力
- 【FAQ】在华为鸿蒙车机上集成华为帐号的常见问题总结
- 如何用3D流体实现逼真水流效果?
- 如何用3D流体实现逼真水流效果?
- 汽车行业:充分借力数据价值,推动数字化营销链路闭环
- 空间音频技术与生态发展高峰论坛成功举办,业界首个Audio Vivid创作工具花瓣三维声亮相
- 【运营宝典】华为分析服务如何助力广告投放策略优化?
- HMS Core 6.8.0版本发布公告
- 潦草手写体也能轻松识别,快速提取文字不用愁
- 上新啦KIT
- 开发者问第五期
- HDC2022的无障碍参会体验,手语服务是如何做到的?