php中序列化和json使用方法_第1页
php中序列化和json使用方法_第2页
php中序列化和json使用方法_第3页
php中序列化和json使用方法_第4页
php中序列化和json使用方法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——php中序列化和json使用方法php中序列化和json使用方法

导语:序列化是将对象状态转换为可保持或可传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。下面的是我为大家搜集的php中序列化和json使用方法,梦想对你有所扶助。

将对象的状态信息转换为可以存储或传输的窗体的过程。在序列化期间,对象将其当前状态写入到临时或耐久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创造该对象。

通常,对象实例的全体字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不依赖于该成员的可访问性。类似地,反序列化从序列化的表示形式中提取数据,并直接设置对象状态,这也与可访问性规矩无关。对于任何可能包含重要的安好性数据的对象,假设可能,理应使该对象不成序列化。假设它务必为可序列化的,请尝试生成特定字段来保存不成序列化的重要数据。假设无法实现这一点,那么应留神该数据会被公开给任何拥有序列化权限的代码,并确保不让任何恶意代码获得该权限。

JSON,JavaScriptObjectNotation,一种更轻、更友好的用于接口AJAX、REST等数据交换的格式。JSON是布局化数据串行化的文本格式,作为XML的一种替代品,用于表示客户端与服务器间数据交换有效负载的格式。它是从ECMAScript语言标准衍生而来的。JSON的设计目标是使它成为小的、简捷的、文本的,而且是JavaScript的一个子集。

如下一段代码,显示了对数组和对象编码后生成的字符串及其长度

复制代码代码如下:

classFoo

public$int=1;

public$bool=TRUE;

public$array=arrayarray1,2=test,string;

publicfunctiontest$flag

echo$flag,testfunctionforFoobr/;

publicstaticfunctionoutput$str

echo$str,br/;

publicstaticfunctioncompare_serialize_and_json$data

$serialize_str=serialize$data;

self::output序列化后的值:.$serialize_str.;length=.

strlen$serialize_str;

$json_str=json_encode$data;

self::outputJSON后的值:.$json_str.;length=.strlen$json_str;

$test_data=arrayw=0,phppan=1,com=2;

//序列化数组

echo数组:br/;

Foo::compare_serialize_and_json$test_data;

$foo=newFoo;

echo对象:br/;

Foo::compare_serialize_and_json$foo;

输出:

复制代码代码如下:

数组:

序列化后的值:a:3:s:4:w;i:0;s:6:phppan;i:1;s:3:com;i:2;;length=52

JSON后的值:w:0,phppan:1,com:2;length=29

对象:

序列化后的值:O:3:Foo:3:s:3:int;i:1;s:4:bool;b:1;s:5:array;a:3:i:0;

a:1:i:0;i:1;i:2;s:4:test;i:3;s:6:string;;length=111

JSON后的'值:int:1,bool:true,array:0:[1],2:test,3:string;length=63

很明显的长度识别,serialize在编码后约莫是json的两倍。

理由:

?serialize后字符串包含了子串的长度,这可能是速度方面的优化,典型的空间换时间,但是它本身还是太重了。

?serialize有更加细致的类型区分,而json只有四种类型,并且是以简朴的符号表示。

以代码说明问题,如下对比速度的代码:

复制代码代码如下:

$max_index=10;

ini_setmemory_limit,512M;

$array=array_fill0,1000000,rand1,9999;

echoserialize:br/;

$start=xdebug_time_index;

for$i=0;$i$max_index;$i++

$str=serialize$array;

$end=xdebug_time_index;

echo$end-$start,br/;

echojson:br/;

$start=xdebug_time_index;

for$i=0;$i$max_index;$i++

$str=json_encode$array;

$end=xdebug_time_index;

echo$end-$start,br/;

unset$array,$str;

输出:

复制代码代码如下:

serialize:

9.5371007919312

json:

1.4313209056854

serialize的速度在大数据量的处境下比json差了快一个数量级。

从上面两点看,json不管是在速度还是在生成的字符串的大小上都比serialize要好,那为什么serialize还要存在呢?理由在下面这个点:实现的功能。

如下代码:

复制代码代码如下:

headerContent-type:text/html;charset=utf8;

classFoo

publicfunctiontest$flag

echo$flag,testfunctionforFoobr/;

$foo=newFoo;

echo反序列化测试:br/;

$foo-test1;

$serialize_str=serialize$foo;

$obj=unserialize$serialize_str;

$obj-test2;

$foo-test1;

$json_str=json_encode$foo;

$obj=json_decode$json_str;

$obj-test2;

die;

输出:

复制代码代码如下:

反序列化测试:

1testfunctionforFoo

2testfunctionforFoo

1testfunctionforFoo

!Fatalerror:CalltoundefinedmethodstdClass::test

jso

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论