以下教程为无需c扩展版本
官网下载protoc脚本,用于生成所需php类
https://github.com/protocolbuffers/protobuf/releases
window下下载win32或者win64版本,mac下载osx版本
解压后得到可运行的脚本protoc
编写proto消息类型,保存为person.proto
syntax="proto3";
package proto;
message Person{
string name=1;
int32 age=2;
}
执行脚本,生成类库
protoc --php_out=./ person.proto
执行后生成文件
GPBMetadata/Person.php Proto/Person.php
在php中使用
安装composer依赖扩展?composer require google/protobuf
注意国内镜像可能下载失败,可以将镜像改为?https://repo.packagist.org?后重新执行
序列化
<?php
include 'vendor/autoload.php';
include 'GPBMetadata/Person.php';
include 'Proto/Person.php';
$person = new Proto\Person();
$person->setName("zuimeng");
$person->setAge(26);
$data = $person->serializeToString();
file_put_contents('data.bin', $data);
反序列化
<?php
include 'vendor/autoload.php';
include 'GPBMetadata/Person.php';
include 'Proto/Person.php';
$bindata = file_get_contents('./data.bin');
$person = new Proto\Person();
$person->mergeFromString($bindata);
echo $person->getName();
echo $person->getAge();
参考:PHP环境下使用ProtoBuf - 简书
|