3、定义协议文件
以User.proto为例
syntax="proto3";
message UserInfo
{
int32 id = 1;
string name = 2;
}
用protoc编译协议文件,如protoc --php_out=./ User.proto,会在当前目录下生成GPBMetadata目录和UserInfo.php文件
测试代码如下:
require(__DIR__.DIRECTORY_SEPARATOR.'UserInfo.php');
require(__DIR__.DIRECTORY_SEPARATOR.'GPBMetaData/User.php');
$pbUserInfo = new UserInfo();
$pbUserInfo->setId(1);
$pbUserInfo->setName('echo');
$str = $pbUserInfo->serializeToString();
$ptTempUser = new UserInfo();
$ptTempUser->mergeFromString($str);
var_dump("id:".$ptTempUser->getId()." name:".$ptTempUser->getName()); 注意,序列化到字符串是用serializeToString,也可以序列化到输出流中用serializeToStream,而反序列化是用mergeFromString