php序列化操作,PHP序列化操作方法分析

本文详细介绍了PHP的序列化和反序列化操作,包括使用serialize和unserialize函数,以及__sleep和__wakeup魔术方法的作用。通过实例展示了如何在存储和恢复数据时使用这些方法。此外,还提到了__toString和__invoke方法在特定情况下的调用。文章强调了在反序列化过程中确保类声明存在的必要性,以及如何通过这些方法管理对象的状态和资源。
摘要由CSDN通过智能技术生成

PHP序列化操作方法分析

发布于 2017-08-03 13:16:11 | 80 次阅读 | 评论: 0 | 来源: 网友投递

PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。

这篇文章主要介绍了PHP序列化操作方法,结合实例形式分析了php序列化的原理、实现方法、相关函数与操作技巧,需要的朋友可以参考下

本文实例讲述了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序列化操作方法分析

PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析

PHP多种序列化与反序列化的方法小结

PHP多种序列化/反序列化的方法

详解PHP序列化反序列化的方法

PHP序列化/对象注入漏洞分析

详解PHP中的序列化、反序列化操作

PHP多种序列化/反序列化的方法详解

PHP序列化函数 serialize()和unserialize()使用说明

PHP针对JSON操作实例分析

php文件下载处理方法分析

php序列化函数serialize() 和 unserialize() 与原生函数对比

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值