之前我们分享了Google Protobuf的相关介绍以及基本数据类型,本篇文章就简单介绍下如何在php框架laravel中使用protobuf。

1、安装配置php的protobuf环境:

最新版的protobuf已经支持PHP,所以只需在https://github.com/google/protobuf/releases这里安装protobuf即可,如下图所示: 本篇文章是基于windows下的php开发环境测试的,这里就选择windows下的protobuf安装程序。

2、在laravel中建立相应的目录结构,然后执行命令解析proto生成对应的文件:

执行命令如下:

protoc --php_out="protobuf/compile" "protobuf/protos/comment.proto"

生成后的目录截图如下:

3、在laravel控制器中编写测试代码:

执行composer require "google/protobuf",安装laravel中解析protobuf的相关库。 在composer.json文件中配置如下:

"autoload": {
        "psr-4": {
            "App\\": "app/",
            "Protos\\": "protobuf/compile/Protos",
            "GPBMetadata\\Protobuf\\Protos\\": "protobuf/compile/GPBMetadata/Protobuf/Protos",
        }
    }

控制器文件中代码如下:

 public function testSendProtobuf(){
        $from = new Comment();
        $from->setId(1);
        $from->setText('Hello World!');
        $from->setCreatedAt(date('Y-m-d h:i:s', time()));

        $packed = $from->serializeToString();

        $client = new Client();
        $r = $client->request('POST', 'http://127.0.0.1/protobuf/testReceiveProtobuf', [
            'body' => $packed
        ]);
        \Log::info($r->getBody());
    }

    public function testReceiveProtobuf(Request $request){
        $parsedComment= new Comment();
        $parsedComment->mergeFromString($request->getContent());
        return ['id' => $parsedComment->getId(), 'text' => $parsedComment->getText(), 'created_at' => $parsedComment->getCreatedAt()];
    }

配置好相关的路由,然后在浏览器中执行即可查看返回结果。

comment.proto文件内容如下:

syntax = "proto3";

package protos;
message Comment {
    int32 id = 1;
    string text = 2;
    string created_at = 3;
}

results matching ""

    No results matching ""