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数组。