From: Mark Slee Date: Mon, 11 Oct 2010 21:45:13 +0000 (+0000) Subject: THRIFT-952. TBinarySerializer utility class for converting between byte strings and... X-Git-Tag: 0.6.0~83 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=052bbef327eda51ddde5845a2794c344eab8e3a0;p=common%2Fthrift.git THRIFT-952. TBinarySerializer utility class for converting between byte strings and PHP objects Adds a nice TBinarySerializer class to make it simple to convert between PHP objects and serialized strings using the Binary protocol. Patch: Radu Marin git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1021521 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/lib/php/Makefile.am b/lib/php/Makefile.am index 8067e65a..07242f9a 100644 --- a/lib/php/Makefile.am +++ b/lib/php/Makefile.am @@ -37,6 +37,7 @@ php_DATA = \ phpprotocoldir = $(phpdir)/protocol phpprotocol_DATA = \ src/protocol/TBinaryProtocol.php \ + src/protocol/TBinarySerializer.php \ src/protocol/TProtocol.php phptransportdir = $(phpdir)/transport diff --git a/lib/php/src/protocol/TBinarySerializer.php b/lib/php/src/protocol/TBinarySerializer.php new file mode 100644 index 00000000..2913d32a --- /dev/null +++ b/lib/php/src/protocol/TBinarySerializer.php @@ -0,0 +1,69 @@ +getName(), + TMessageType::REPLY, $object, + 0, $protocol->isStrictWrite()); + + $protocol->readMessageBegin($unused_name, $unused_type, + $unused_seqid); + } else { + $object->write($protocol); + } + return $transport->getBuffer(); + } + + public static function deserialize($string_object, $class_name) { + $transport = new TMemoryBuffer(); + $protocol = new TBinaryProtocolAccelerated($transport); + if (function_exists('thrift_protocol_read_binary')) { + $protocol->writeMessageBegin('', TMessageType::REPLY, 0); + $transport->write($string_object); + return thrift_protocol_read_binary($protocol, $class_name, + $protocol->isStrictRead()); + } else { + $transport->write($string_object); + $object = new $class_name(); + $object->read($protocol); + return $object; + } + } +}