hessianphp 的序列化模組

2021-05-02 21:46:09 字數 2081 閱讀 7242

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陣列。

序列化 json pickle shelve模組

序列化 把乙個物件,從記憶體中變成乙個可儲存,可傳輸的過程。json 不能序列化函式和類。json模組可以與其它程式進行介面對接。pickle 是python專有的乙個序列化模組,可以序列化函式,但不能與其它語言進行介面。shelve模組更靈活,只有乙個open方法。import json dic ...

序列化(序列化)

原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...

序列化(模型序列化 序列化巢狀)

from rest framework import serializers from meituan.models import merchant,class merchantserializer serializers.modelserializer class meta model merch...