PHP序列化操作方法分析


Posted in PHP onSeptember 28, 2016

本文实例讲述了PHP序列化操作方法。分享给大家供大家参考,具体如下:

序列化就是将变量数据转换为字符串(跟类型转换机制不同),一般应用于存储数据(文件),然后在别的情形下恢复(反序列化)

序列化:

$val = serialize($var);
file_put_contents('./*.txt',$val);

反序列化:

$val = file_get_contents('./*.txt');
$var = unserialize($val);

当一个对象进行序列化操作时,会自动调用类中的__sleep();

当反序列化一个对象的时候,会自动调用对应类的__wakeup(),反序列操作中,必须具备了对应的类的声明。

__sleep()可以进行一些数据(资源)的清理关闭操作,并返回一个数组,该数组存储一些需要进行序列化的对象的属性,即可以挑选属性进行序列化。

class bee{
 public $a;
 protected $b;
 private $c;
 public function __sleep(){
  return array('a','b');
  }
}

__wakeup()在进行反序列话操作的时候进行某些有用的‘数据恢复工作',比如连接数据库

public function __wakeup(){
 $this->func();
}

__tostring()

当把一个对象当作一个字符串来看待处理的时候,会自动调用该方法。通过该方法可以返回合适的字符串,如果没该定义该方法就会出错。

class bee{
 public function __tostring(){
  echo 'string';
 }
}
$obj = new bee();
//对象不能直接当字符串使用
echo $obj;

__invoke()

当对象当作一个方法使用的时候,会自动调用该方法

class bee{
 public function __invoke(){
  echo 'invoke';
 }
}
$obj = new bee();
//对象不能直接当字符串使用
echo $obj();

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
laravel 中如何使用ajax和vue总结
Aug 16 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
PHP类的特性实例分析
Sep 28 #PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 #PHP
PHP会话操作之cookie用法分析
Sep 28 #PHP
PHP session会话操作技巧小结
Sep 27 #PHP
PHP简单预防sql注入的方法
Sep 27 #PHP
PHP数据对象PDO操作技巧小结
Sep 27 #PHP
PHP基于GD库的图像处理方法小结
Sep 27 #PHP
You might like
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
浅述python中深浅拷贝原理
2018/09/18 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
Python post请求实现代码实例
2020/02/28 Python
python小白学习包管理器pip安装
2020/06/09 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
函授自我鉴定范文
2014/02/06 职场文书
冬季施工防火方案
2014/05/17 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
礼貌问候语大全
2015/11/10 职场文书
校园安全学习心得体会
2016/01/18 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书