liues1992 / php-protobuf-generator
PHP 的 Google protobuf 生成器
v0.1.7
2018-12-11 03:08 UTC
Requires
- php: >=7.0
- lvht/protobuf: ^3.5
- pear/console_commandline: ^1.2
Requires (Dev)
- phpunit/phpunit: ^6.5
README
简介
使用 PHP 生成 protobuf 代码: ./protoc-gen.php -o build tests/test3.proto
生成的消息代码旨在与 Google protobuf 的官方 PHP 实现一起工作: https://github.com/google/protobuf/tree/master/php
生成的服务客户端代码旨在与 gRpc https://grpc.org.cn/docs/quickstart/php.html#prerequisites 一起工作
要求
- Unix/Linux 系统
- PHP >= 7.0 且已安装 composer
- 仅支持 proto3 语法 proto 文件
- 已安装 protoc,版本 >= 3.5
使用方法
-
composer require liues1992/php-protobuf-generator
-
./vendor/bin/protoc-gen.php --out=build --grpc_out=build tests/*.proto
或直接作为插件使用protoc --php-custom_out=build --plugin=protoc-gen-php-custom=./vendor/bin/protoc-gen-plugin.php \ --grpc-php_out=build --plugin=protoc-gen-grpc-php=./vendor/bin/protoc-gen-grpc-plugin.php tests/*.proto
-
请参阅 示例 文件夹以获取生成的代码
运行测试
composer test
待办事项
- 更多测试用例
- 打包为 phar
- 支持 proto2
- 自定义生成器支持(通过 require 此包编写自己的代码生成器)
为什么需要这个而不是 Google 的默认实现?
- 有时您希望自定义生成的代码,如果修改 google/protobuf 源代码(C++)并重新编译 protoc 二进制文件,这将是复杂的。考虑上述情况
- 在消息类中添加便利方法。
- 支持 proto2
- 生成自定义 rpc 代码(如果您不使用 gRpc 或希望将其用于 PHP 服务器端)
- Google 生成的代码中存在一些错误。
public function setEnum($var)
{
// GPBUtil::checkEnum accepts only on param
GPBUtil::checkEnum($var, \Gary\Test\Foo_Enum::class);
$this->enum = $var;
return $this;
}
- 用 PHP 生成 PHP 代码很酷(易于 PHP 开发者参与)。
它是如何工作的
这是个秘密。自己去发现吧。