protobuf是何物
Protocol Buffers - Google's data interchange format
think XML, but smaller, faster, and simpler
protobuf 是google出品的数据格式转换转换协议,支持多种语言,也可以将其理解成一种数据序列化/反序列化协议
github地址:https://github.com/protocolbu...
支持<font color=Blue>php、python、java、go</font>
等
在php中使用protobuf
安装protobuf
mac系统使用brew安装brew install protobuf@3.7
安装php的protobuf扩展
pecl install protobuf
引入protobuf-php
composer require google/protobuf
定义.proto文件
syntax="proto3"; //声明版本,3x版本支持php
package test; //包名
message Person{
string name=1; //姓名
int32 age=2; //年龄
bool sex=3; //性别
}
生成php代码,将生成的文件输出到--php_out目录中
` protoc --php_out=/Users/jiao/ProjectPhp/test/protobuf test.proto
`
可以发现生成了这2个文件
编写测试代码
<?php
//require '../vendor/autoload.php';
//use Test\Person;
include 'GPBMetadata/Test.php';
include 'Test/Person.php';
$model = new Test/Person();
$model->setAge(19);
$model->setName('123');
$model->setSex('1');
$res = $model->serializeToString();
$res1 = $model->serializeToJsonString();
file_put_contents('data.bin',$res);
$bindata = file_get_contents('./data.bin');
$person = new Test\Person();
$person->mergeFromString($bindata);
echo $person->getName() . PHP_EOL;
echo $person->getAge() . PHP_EOL;
echo $person->getSex() . PHP_EOL;
输出
小强
19
1
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。