protobuf3入门(php版)

下载代码

 git clone https://github.com/protocolbuffers/protobuf.git

安装protobuf:

./autogen.sh
./configure --prefix=/usr/local/protobuf
make
sudo make install

安装php扩展:

cd protobuf/php/ext/google/protobuf
/usr/local/php-7.1.11/bin/phpize
./configure --with-php-config=/usr/local/php-7.1.11/bin/php-config
make
sudo make install

添加配置:

/usr/local/php-7.1.11/bin/php --ini | grep php.ini
sudo vim  /usr/local/php-7.1.11/etc/php.ini
extension=protobuf.so

测试:

编写proto 协议文件

vim User.proto

syntax="proto3";
message UserInfo
{
int32 id = 1;
string name = 2;
}

用protoc编译协议文件,会在当前目录下生成GPBMetadata目录和UserInfo.php文件

/usr/local/protobuf/bin/protoc --php_out=./ User.proto

安装php库:

composer require google/protobuf

编写php脚本

<?php

require('./vendor/autoload.php');
require('./UserInfo.php');
require('./GPBMetadata/User.php');

$pbUserInfo = new UserInfo();
$pbUserInfo->setId(1001);
$pbUserInfo->setName('jack');
$str = $pbUserInfo->serializeToString();

$ptTempUser = new UserInfo();
$ptTempUser->mergeFromString($str);
var_dump("id:".$ptTempUser->getId()." name:".$ptTempUser->getName());

执行代码

/usr/local/php-7.1.11/bin/php -f test.php 
string(17) "id:1001 name:jack"

《protobuf3入门(php版)》 image.png

持续更新~

    原文作者:战神悟空
    原文地址: https://www.jianshu.com/p/ace5d1e83266
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞