protobuf3在php中的使用

来源:互联网 发布:合肥市行知学校前身 编辑:程序博客网 时间:2024/05/24 05:56

1、从https://github.com/google/protobuf/releases中下载protoc可执行文件

2、参考https://github.com/google/protobuf/tree/master/php安装c的扩展

3、定义协议文件

以User.proto为例

syntax="proto3";message UserInfo{int32 id = 1;string name = 2;}

用protoc编译协议文件,如protoc --php_out=./ User.proto,会在当前目录下生成GPBMetadata目录和UserInfo.php文件


测试代码如下:

<?phprequire(__DIR__.DIRECTORY_SEPARATOR.'UserInfo.php');require(__DIR__.DIRECTORY_SEPARATOR.'GPBMetaData/User.php');$pbUserInfo = new UserInfo();$pbUserInfo->setId(1);$pbUserInfo->setName('echo');$str = $pbUserInfo->serializeToString();$ptTempUser = new UserInfo();$ptTempUser->mergeFromString($str);var_dump("id:".$ptTempUser->getId()." name:".$ptTempUser->getName());

注意,序列化到字符串是用serializeToString,也可以序列化到输出流中用serializeToStream,而反序列化是用mergeFromString