下載代碼
git clone https://github.com/protocolbuffers/protobuf.git
安裝protobuf:
./autogen.sh
./configure --prefix=/usr/local/protobuf
make
sudo make install
安裝php擴(kuò)展:
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
測(cè)試:
編寫(xiě)proto 協(xié)議文件
vim User.proto
syntax="proto3";
message UserInfo
{
int32 id = 1;
string name = 2;
}
用protoc編譯協(xié)議文件,會(huì)在當(dāng)前目錄下生成GPBMetadata目錄和UserInfo.php文件
/usr/local/protobuf/bin/protoc --php_out=./ User.proto
安裝php庫(kù):
composer require google/protobuf
編寫(xiě)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());
執(zhí)行代碼
/usr/local/php-7.1.11/bin/php -f test.php
string(17) "id:1001 name:jack"
image.png
持續(xù)更新~