hessianphp 的序列化模块

1、从svn下载hessianphp的代码,解压缩,放到web目录下

 

2、如果不是公网域名,且server和client在一台机器上,记得要在client配置 hosts到本地

 

3、访问http://hessian.centos.cn/trunk/tests/callTest.php ,进行使用

 

由于我们主要想使用它的序列化与反序列部分,所以重点看了看这块。

 

hessianphp的序列化与反序列化的核心文件是 hessianphp/trunk/dist/Protocol.php ,其中有以下3个需要注意的类:

 

 

class HessianProtocolHandler{

class HessianParser extends HessianProtocolHandler{

class HessianWriter extends HessianProtocolHandler{

 

第一个类HessianProtocolHandler是序列和反序列化的基类,主要提供stream用来存放读写字符串的位置,refs用来存放与对象相关的信息等。

 

第二个类HessianParser是反序列化类,包括针对int、bool、string、lish、map等多种数据类型的解析方法,以及我们比较关心的parseObject方法,该方法会根据传入stream中数据的类型,分别调用其他方法解析。

 

第三个类HessianWriter是序列化类,有跟HessianParser对应的序列化方法。

 

需要注意的是,如果使用的是PHP5,那么由于版本问题,会报以下notify,不用理会,即可。

PHP Notice:  Only variable references should be returned by reference in /ms/wwwroot/hessianphp/trunk/dist/Protocol.php on line 291

 

封装了两个序列化和反序列化的方法:

 

# func.inc

 

<?php

# hessian的序列化和反序列方法

include('../dist/Protocol.php');

 

function hessian_parse($str){

    if (empty($str)){

        return false;

    }

 

    $parser = &new HessianParser();

    if (empty($parser)){

        return false;

    }

 

    $parser->setStream($str);

    @$ret = $parser->parseObject();

 

    return $ret;

}

 

function hessian_writer($mixed){

    $writer = &new HessianWriter();

    if (empty($writer)){

        return false;

    }

 

    $writer->writeObject($mixed);

 

    $stream = $writer->stream;

    return $stream;

}

 

 

# test.php

 

 

#!/usr/local/php/bin/php

<?php

///

// 测试hessian的序列化、反序列化

///

 

include('func.inc');

 

$mix = 'angsdagnaslgnsda';

$mix = array(

    'id' => 1300000000,

    'name' => 'kobe'

);      

class cyTest {

    var $name;

    var $id;

    function __construct($name, $id){

        $this->name = $name;

        $this->id = $id;

    }

}   

$mix = new cyTest('kobe', 123); // 如果没有以上的类定义,会生成一个hash数组

 

$mix = hessian_writer($mix);

var_dump(hessian_parse($mix));

exit;

 

 

使用test.php测试,对于字符串、数组、对象都可以正确的序列化和反序列化,其中,如果在反序列化时找不到对象的定义,则会生成hash数组。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值