序列化与反序列化

本文介绍了序列化和反序列化的作用,强调它们在数据存储和传输中的重要性。序列化是将数据转换为可恢复的字节串,而反序列化则是将这些字符串恢复为原始格式。在PHP中,`serialize`和`unserialize`用于对象的序列化和反序列化,`__sleep`和`__wakeup`是相关的重要钩子函数。了解并正确使用序列化能够提升程序的维护性和安全性。
摘要由CSDN通过智能技术生成

考虑到可读性,数据往往不是以最有效的方式编写,但为了存储或传递数据时更加高效,同时不丢失其类型和结构,可以利用序列化和反序列化函数对数据进行处理。

序列化

将特定格式数据转换为可以恢复的字节串序列

什么时候进行序列化?

1)数据在网络上传输时

2)数据保存到文件中时

(由于序列化返回的是字符串,方便存储于任何地方!)

反序列化

顾名思义,将序列化得出的字符串恢复为原有格式数据的过程

什么时候进行反序列化?

1)程序读取数据的时候

序列化和反序列化的目的是在不影响数据有效性情况下,更高效地存储和传输数据,使程序更具维护性。

以前流行的序列化方式是生成XML字符串,目前几乎都是生成JSON格式字符串。除了一般数据的序列化外,很多语言都支持对object的序列化和反序列化。

PHP中的序列化与反序列化

函数:

serialize/unserialize

json_encode/json_decode

序列化

serialize函数

serialize函数是标准的序列化函数,会完整地序列化数据,其中可以修改一个子函数__sleep(),只序列化部分数据,忽略其他数据

__sleep():是一个钩子函数,默认序列化全部属性,可以修改至只序列化部分属性,没有序列化的属性会被忽略。

示例:

1.NULL

NULL被序列化为N!

2.boolean

boolean类型数据被序列化为b:

true序列化为b:1false序列化为b:0

3.integer

i:123 // 123的序列化

4.double

d:1.5

5.string

s:4:”test” // test序列化,4:字符串长度!

6.数组(array)

array(“tony”,”wenxin”)

a:2:{i:0;s:4:”tony”;i=1;s:6:”wenxin”;}// 解释

a:array2:数组元素个数0,1:数组的下标

序列化示例

<?php
class Person
{
   
    var $name;   
    var $sex;    
    var $age;    

    function __construct($name = "", $sex = "", $age = "") {
   
        $this->name = $name;
        $
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值