php中的序列化与反序列化

1.serialize() <===> unserialize(),这个大家用的最多, 老熟人了
session 保存默认用的就是这个.
如果想存储对象,数组数据等可以用(试试跟var_export()比较)
[php]
session_start();
echo $foo = serialize($_SESSION)
print_r(unserialize($foo));
[/php]

2.xmlrpc_encode, xmlrpc_decode 对应模块 php_xmlrpc
xmlrpc提供了php与xml格式间转换的方法.
参考http://www.xmlrpc.com/ , http://www.ugia.cn
相信很多人都在用
[php]
echo $foo = xmlrpc_encode($_ENV);
print_r(xmlrpc_encode($foo));
[/php]

3.wddx, 跟xmlrpc差不多 参考手册
应用搜搜google就知道了.
[php]
//wddx_serialize_vars();
echo $foo = wddx_serialize_value($_SERVER);
print_r(wddx_deserialize($foo));
[/php]

4.JSON, 对应模块 php_json, 能实现跟js对象之间的转换,
提供的函数有两个json_encode(), json_decode();
应用及优势参考文章http://www.cswiki.com/blog/?p=70
google, yahoo都在用, prototype.js可以用header('X-JSON:...');
AJAX
[php]
//注意格式及中文问题
$foo = '[{"uid":1000,"name":"abc"},{"uid":1002,"name":"def"},{"uid":1003,"name":"ghi"}]';
$bar = json_decode($foo);
print_r($bar);
echo json_encode($bar);
[/php]

5.urlparam序列化  http_build_query()也算吧,反序列化方法很多,url过来的话apache 就给处理好了
注意两个设置
arg_separator.output
arg_separator.input

string http_build_query ( array formdata [, string numeric_prefix]);
[php]
//可以是对象或整形下标数组,见手册
$foo = array(        'ids'=>array(520, 521, 522),
                                'action'=>'del'
);
echo http_build_query($foo);
[/php]

6.一个设置:unserialize_callback_func PHP _INI_ALL
[手册]:如果反序列器发现有未定义类要被实例化,将会调用反序列回调函数(使用未定义类作为参数)。
如果指定函数不存在,或者此函数没有包含/执行该未定义类,则显示警告。所以只有在你确实想要执行
这样的回调函数时才设置该选项。
(模块设置略)
[php]
ini_set('unserialize_callback_func', 'unserialize_callback_func');

function unserialize_callback_func($str) {
        eval("class $str{}");
}

print_r(unserialize('O:3:"foo":1:{s:3:"bar";s:3:"bar";}'));
[/php]

7.我不知道的及自定义的如pear中有一个序列化url参数的
8.应用

你可能感兴趣的:(php中的序列化与反序列化)