介于Windows下面protobuf的PHP扩展很难搞定,本文是基于centos6.5_x64
1. 安装
可以使用源码安装https://github.com/google/protobuf/, 也可以使用直接下载二进制文件复制到系统path里面
安装完成后 在命令行执行 protoc -h
ps: protoc 默认支持 --go_out golang版本
2. PHP安装扩展(2017.08.07 如果在项目中引用 https://github.com/google/protobuf/php 则不需要进行安装)
源码目录中 xxxxxx/php/ext/google/protobuf
phpize
./configure
make
make install
在/etc/php.d/中新建 protobuf.ini,并加入以下内容开启扩展
echo extension=protobuf.so > /etc/php.d/protobuf.ini
extension=protobuf.so
3. 根据协议生成php文件
protoc --php_out=out_dir test.proto
4. 使用
将https://github.com/google/protobuf/php下的src引入到工程中,或者使用composer进行管理
ps: 由于我是手动添加到工程目录, 将descriptor.php文件中的类按namespace的格式分别复制到对应的类中
message.proto
syntax = "proto3";
package protocols.protobuf;
// import "any.proto";
//请求
message Request {
int32 id = 1; //消息类型ID
int32 code = 2;
}
$request=new\Protocols\Protobuf\Request();
$request->mergeFromString($data);
var_dump($request->getId());
网友评论