PHP环境中使用ProtoBuf数据格式

互联网 20-6-19

前言

  目前官方ProtoBuf 最新版本ProtoBuf3,已经支持多种语言:C++\C#\Go\Java\Python\Ruby\Object C \Javascript\PHP,并且提供工具很方便地根据不同语言产生ProtoBuf需要的类库。

  下面将通过Person数据格式作为示例进行描述如果在PHP环境中如何使用ProtoBuf3。

一、定义一个消息类型

创建一个关于Person的定义文件(以.proto为后缀),如示例为person.proto,文件内容如下:

syntax="proto3"; package test; message Person{  string name=1;//姓名  int32 age=2;//年龄  bool sex=3;//性别 }

3、message Person:消息主体内容,里面为各个字段的定义

二、生成对应的PHP类

定义好Person的格式后,该格式如果不生成我们所需要的类库,其实是无任何意义的,还google提供一个工具protoc生成我们要的类库。

解压并安装:

tar -zxvf protobuf-php-3.5.1.tar.gz cd protobuf-3.5.1 ./configure --prefix=/opt/soft/protobuf make make install

2、生成类库

Test/Person.php

三、在PHP中使用ProtoBuf

1、序列化

<?php include 'vendor/autoload.php'; include 'GPBMetadata/Person.php'; include 'Test/Person.php';  $person = new Test\Person(); $person->setName("lailaiji"); $person->setAge("28"); $person->setSex(true); $data = $person->serializeToString(); file_put_contents('data.bin',$data);
<?php include 'vendor/autoload.php'; include 'GPBMetadata/Person.php'; include 'Test/Person.php'; $bindata = file_get_contents('./data.bin'); $person = new Test\Person(); $person->mergeFromString($bindata); echo $person->getName();

可以正常地输出lailaiji

2、mergeFromJsonString:Json字符串反序列化

.

fixed32,fixed64,sfixed32,sfixed64,bool,bytes

推荐教程:《PHP》

以上就是PHP环境中使用ProtoBuf数据格式的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: PHP
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:分享几个 Hyperf 常用助手函数

相关资讯