protobuf3在php中的使用
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文件
测试代码如下:
<?php
require(__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
protobuf3在php中的使用相关推荐
- GNU Make 使用手册(于凤昌中译版)
GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...
- carto_grapher快速安装避坑指南
参考博客 安装准备主要参考了该篇博客! 一点小修改 主要在安装protobuf3的过程中,原始命令安装的分支v3.6.0不存在:git clone -b v3.6.0 https://github.c ...
- 面试:第十二章:所有总结
Java基础 java基本类型哪些,所占字节 byte :1个字节 short :2个字节 char :2个字节 int :4个字节 long :8个字节 float :4个字节 double :8个 ...
- linux内核分析(转自某位大哥网上的笔记)
启动 当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码.BIOS先进行一系列的系统自检,然后初始化位于地址0的中断 ...
- Unity中使用Protobuf3.0
今天准备在unity中使用protobuf, 但是遇到了一些问题,记录一下. 首先,我们到google protobuf github 上下载工程,主要有两个东西: 1.Protocol Compil ...
- 在Unity3D中使用Protobuf3
Protobuf:平台无关.语言无关.可扩展且轻便高效的序列化数据结构的协议,一般用于网络通信和数据存储 第一步:下载并准备DLL文件 链接:mvn9(或者 https://github.com/pr ...
- 手把手教你如何在Unity中使用UnityGoogle.Protobuf3(三) 序列化与反序列化
手把手教你使用Google.Protobuf3三 序列化与反序列化 1.Untiy工程创建 2.导入Google.Protobuf.dll 3.导入proto协议文件 4.编写序列化与反序列化工具类 ...
- Unity中使用Google.Protobuf3,获取dll文件
获取Google.Protobuf.dll文件,有两中方式可以获取,如下: 第一种方法: 获取官方的Google.Protobuf源码: protobuf各个版本下载地址 https://github ...
- protobuf3 import的使用和多proto代码生成和cmake中引用protobuf
市面上大多博客没介绍如何组建多目录,多proto的项目经验,如果本博客经验如果能帮到你,那真是太好了 本次代码生成C++代码,测试用例采用gtest进行搭建,工程目录如下: hobby.proto 位 ...
最新文章
- python下selenium模拟浏览器常见操作
- reactjs组件实例的三大属性之state属性使用示例
- 今日arXiv精选 | 31篇EMNLP 2021最新论文
- Request 接收参数乱码原理解析
- python手机编译器可以干什么_Python是什么?Python学习用哪些编译器?
- c语言可循环计算器代码,可编程简易计算器(代码)
- c语言计算机猜数字100以内,求一个猜数字C语言代码,要求如下 计算机生成一个100以内的随机数,玩家来猜 记录猜的次数,最后打...
- docker 容器开启ssh服务
- eclipse启动不起来,eclipse.ini配置问题(支持大内存64bit问题)
- MediaPlayer 的prepareAsync called in state 8 错误
- visual studio 2015 2017 key vs2015 vs2017密钥
- jquery属性过滤选择器[attr=value]、[attr!=value]、[attr^=value]、[attr$=value]、[attr*=value]、[attr|=value]
- 安卓开发 底部导航图标切换时动画效果_体验安卓 10:好用百倍都不止!
- 别再透支你的社交信用了
- 自动化测试-selenium初始化Driver参考
- Putty CentOS SSH 总是自动断开连接
- 微信小程序服务端调用--小程序码 wxacode.getUnlimited 接口调用,实现微信扫码直接跳转小程序页面
- 根文件系统与文件系统的区别
- Picture2Epub
- 将qq目录下文件写如qq.txt
热门文章
- Sql字符串操作函数
- redis性能测试报告
- android EditText监听事件及参数详解
- 前1000位粉丝的诞生
- 在 ASP.NET MVC 中使用 Chart 控件
- 编程语言python入门要电脑什么配置能带动-Python是万能的编程语言吗?这五大用途很重要!...
- 中国有多少python程序员-“刚毕业1年,做Python能挣多少?”网友:吹的不多……...
- python 画柱状图-python使用Plotly绘图工具绘制柱状图
- python手机软件-Python爬虫:抓取手机APP的数据
- 编程中python怎么读-编程语言如何在Python中读写文件