前言
"color: #ff0000">一、定义一个消息类型
创建一个关于Person的定义文件(以.proto为后缀),如示例为person.proto,文件内容如下:
syntax="proto3"; package test; message Person{ string name=1;//姓名 int32 age=2;//年龄 bool sex=3;//性别 }
1、syntax="proto3":表明使用的是proto3格式,如果不指定则为proto2
2、package test:定义包名为test,生成类时,会产生一个目录为test
3、message Person:消息主体内容,里面为各个字段的定义
二、生成对应的PHP类
定义好Person的格式后,该格式如果不生成我们所需要的类库,其实是无任何意义的,还google提供一个工具protoc生成我们要的类库。
1、安装protoc
安装地址:protobuf-php-3.5.1.tar.gz,目前最新为3.5.1
官方发布地址:https://github.com/google/protobuf/releases/tag/v3.5.1
解压并安装:
tar -zxvf protobuf-php-3.5.1.tar.gz cd protobuf-3.5.1 ./configure --prefix=/opt/soft/protobuf make make install
2、生成类库
/opt/soft/protobuf/bin/protoc --php_out=./ person.proto
生成后将在当前目录产生如下文件:
GPBMetadata/Person.php
Test/Person.php
三、在PHP中使用ProtoBuf
在PHP中使用ProtoBuf依赖一个protobuf的扩展,目前提供两种方式进行使用,1:php的c扩展,2:php的lib扩展包,这两者均可在刚才下载包里可以找到。
另外,也可以使用composer进行安装该依赖扩展:composer require google/protobuf
这里我主要是使用composer安装,应该它可以帮我产生autoload
安装好依赖后,我们就可以开始在php环境下使用protobuf了
1、序列化
<"lailaiji"); $person->setAge("28"); $person->setSex(true); $data = $person->serializeToString(); file_put_contents('data.bin',$data);
2、反序列化
<"external nofollow" target="_blank" href="https://github.com/eishay/jvm-serializers/wiki">https://github.com/eishay/jvm-serializers/wiki
1、序列号+反序列号时间:
image.png
2、存储大小:
image.pn
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。