• HTTP中使用protobuf
    • 1. 安装protoc命令
    • 2.安装php protocbuf扩展
    • 3.创建test.proto文件
    • 4.进入到src目录下执行如下命令生成php文件
    • 5.修改composer.json文件
    • 6.解析protobuf 还需引入类库
    • 7.测试代码
    • 8.测试访问

    HTTP中使用protobuf

    1. 安装protoc命令

    1. 下载地址https://github.com/google/protobuf/releases
    2. 根据自己系统对应下载

    2.安装php protocbuf扩展

    通过pecl方式安装
    VERSION 目前最新版本为3.5.1.1
    sudo pecl install protobuf-3.5.1.1

    3.创建test.proto文件

    在项目根目录创建Protobuf/Src目录下 创建test.proto 文件
    代码如下:

    1. syntax = "proto3";
    2. package kjcx;
    3. message helloworld
    4. {
    5. int32 id = 1; // ID
    6. string str = 2; // str
    7. }

    4.进入到src目录下执行如下命令生成php文件

    protoc —php_out=./ test.proto

    5.修改composer.json文件

    将命名空间Kjcx 定义到Protobuf/Src/Kjcx/目录
    GPBMetadata定义到Protobuf/Src/GPBMetadata目录下

    1. "autoload": {
    2. "psr-4": {
    3. "App\\": "Application/",
    4. "Kjcx\\": "Protobuf/Src/Kjcx/",
    5. "GPBMetadata\\" :"Protobuf/Src/GPBMetadata"
    6. }
    7. }
    1. 之后执行composer update

    6.解析protobuf 还需引入类库

    通过composer引入到项目中

    1. composer require google/protobuf

    7.测试代码

    在httpController下Index控制器执行如下代码

    1. use Kjcx\helloworld;
    2. class Index extends Controller
    3. {
    4. //测试路径 /index.html
    5. function index()
    6. {
    7. $kjcx = new helloworld();
    8. $kjcx->setId(1);
    9. $kjcx->setStr('test');
    10. $this->response()->write($kjcx->getStr() . $kjcx->getId());
    11. }
    12. //部分代码...

    8.测试访问

    浏览器输入:http://localhost:9501
    输出test1