Protobuf的安装
下面记录下在windows中如何安装protobuf
1、下载
下载所需的安装包,地址为:https://github.com/protocolbuffers/protobuf/releases
下载完成之后解压
2、将bin目录将入环境变量
3、查看安装是否成功
protoc --version
4、编写一个mail.proto文件
// mail.proto syntax = ‘proto3‘; package mail; message MailConfig{ string to = 1; string from = 2; string msg = 3; }
5、 新建一个项目:把 mail.proto 文件,放到项目中。比如这里的prototest/app/mail.proto。
6、执行命令生成PHP相关文件:protoc --php_out=. mail.proto
–php_out=.表示编译成PHP代码,放在当前目录(.),也可以指定文件夹。
7、在PHP中使用ProtoBuf
在PHP中使用ProtoBuf依赖一个protobuf的扩展,目前提供两种方式进行使用:
1) php的c扩展
2)php的lib扩展包,这两者均可在刚才下载包里可以找到。
另外,也可以使用composer进行安装该依赖扩展:composer require google/protobuf
这里我主要是使用composer安装,应该它可以帮助我们产生autoload。安装好依赖后,我们就可以开始在php环境下使用protobuf了
8、使用composer安装以后
在刚才创建的项目prototest目录下,会生成相应的vendor目录,如下图:
9、在项目的根目录新建 index.php,看protoc如何使用吧。prototest/app/index.php 内容如下:
1 <?php 2 defined(‘DS‘) or define(‘DS‘,DIRECTORY_SEPARATOR); 3 4 require $_SERVER[‘DOCUMENT_ROOT‘].‘/vendor/autoload.php‘; 5 require ‘GPBMetadata/Mail.php‘; 6 require ‘Mail/MailConfig.php‘; 7 8 // Write写数据 9 $foo=new \Mail\MailConfig(); 10 $foo->setTo("Tom"); 11 $foo->setFrom("John"); 12 $foo->setMsg("Don‘t forget the meeting!"); 13 $packed=$foo->serializeToString(); 14 15 // Reader读数据 16 $res=new \Mail\MailConfig(); 17 $res->mergeFromString($packed); 18 $jsonArr=[ 19 "to"=>$res->getTo(), 20 "from"=>$res->getFrom(), 21 "msg"=>$res->getMsg(), 22 ]; 23 24 var_dump($jsonArr);
访问一下:
这里就是PHP简单使用protobuf,后面我们再来看看protobuf的语法。
参考链接:https://blog.csdn.net/wplblog/article/details/112537824