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.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场