[protocolbuffers/protobuf]导入proto2时只能生成proto3 .proto的PHP代码

2024-05-13 772 views
8

在编译使用 protobuf/gogoproto/gogo.proto (proto2) 的 .proto (proto3) 时,我得到了 --php_out: gogoproto/gogo.proto: Can only generate PHP code for proto3 .proto files.有解决这个问题的解决方法吗?

回答

3

目前,我们不支持 proto2。 proto2 支持是未来的计划。

1

有什么简单的方法可以跳过它吗?

1

由于proto2文件实际上并没有用于生成,所以可以跳过它吗?例如,当有人导入descriptor.proto(也是proto2)时,你会做什么。

4

@awalterschulze 如果你只是将 gogo.proto 更改为 proto3 语法,可能会更简单?

0

Descriptor.proto 在协议编译器中是特殊情况,这种特殊情况并不漂亮......

8

Gogo.proto 使用descriptor.proto 的扩展。我认为我不能将其变成 proto3,因为它不支持扩展?

5

Proto3 不支持常规扩展,但明确允许对descriptor.proto 中的XXXOptions 消息进行扩展。

3

很有意思。这可能会有所帮助,但是如果我将 gogo.proto 升级到 proto3,我是否会失去与仍在使用 protoc 2.5 的人的向后兼容性?

5

所以这种情况下的解决方法就是从原型中剥离 gogo

grep -vw 'import "github.com/gogo/protobuf/gogoproto/gogo.proto";' payment/paymentpb/payment.proto | sed -e 's/\[[^][]*\]//g' > payment/paymentpb/paymentpb.proto
4

希望PHP支持proto2

9

是的,至少以有限的方式支持描述符扩展。

0

#3623 的重复