介于Windows下面protobuf的PHP擴(kuò)展很難搞定,本文是基于centos6.5_x64
1. 安裝
可以使用源碼安裝https://github.com/google/protobuf/帽氓, 也可以使用直接下載二進(jìn)制文件復(fù)制到系統(tǒng)path里面
安裝完成后 在命令行執(zhí)行 protoc -h
ps: protoc 默認(rèn)支持 --go_out golang版本
2. PHP安裝擴(kuò)展(2017.08.07 如果在項(xiàng)目中引用 https://github.com/google/protobuf/php 則不需要進(jìn)行安裝)
源碼目錄中 xxxxxx/php/ext/google/protobuf
phpize?
./configure
make?
make install?
在/etc/php.d/中新建 ?protobuf.ini趣斤,并加入以下內(nèi)容開啟擴(kuò)展
echo extension=protobuf.so > /etc/php.d/protobuf.ini
extension=protobuf.so
3. 根據(jù)協(xié)議生成php文件
protoc --php_out=out_dir test.proto
4. 使用
將https://github.com/google/protobuf/php下的src引入到工程中,或者使用composer進(jìn)行管理?
ps: 由于我是手動(dòng)添加到工程目錄黎休, 將descriptor.php文件中的類按namespace的格式分別復(fù)制到對應(yīng)的類中
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());