2014-09-26 61 views
1

我有一个使用apache thrift和*.thrift文件创建的服务,该文件可用于生成客户端库。Thrift客户端库的Composer版本控制

服务和*.thrift文件有它自己的版本(例如2.3.0)。

现在我想预先生成PHP的客户端,使其可以加载作曲家,但节俭本身有自己的版本生成不同的文件(例如0.9.1)。

我的想法是预先生成具有不同节俭版本和标签,像以下服务:

<CLIENT-MAJOR>.<CLIENT-MINOR>.<CLIENT-PATCH>.<THRIFT-MAJOR>.<THRIFT-MINOR>.<THRIFT-PATCH> 

但作曲家不喜欢这个版本:

[UnexpectedValueException]                
Could not parse version constraint 2.3.0.0.9.1: Invalid version string "2.3.0.0.9.1" 

我能做?思考?

回答

0

即使生成的代码在不同版本之间有所不同,服务本身也是向后兼容的 - 这就是重中之重。所以不需要包含Thrift版本。否则,你也可以考虑包含你的PHP版本号。

+0

生成的代码在所有情况下都不兼容!例如,在0.8和0.9之间的PHP名称空间被添加,这是一个很大的API更改。顺便说一句。生成的代码需要PHP thrift库在相同的版本!请参阅https://github.com/apache/thrift/tree/0.8.0/lib/php&https://github.com/apache/thrift/tree/0.9.1/lib/php – 2014-09-27 18:32:04

+0

该服务的外部行为是向后兼容,不一定是PHP相关的东西。而且,这又是重中之重。没有人会处理你的代码,但暴露的服务。 – JensG 2014-09-27 21:09:14

+0

我喜欢标记生成的PHP客户端库。该服务本身有它的版本,并没有问题。如果你喜欢在PHP中使用这个服务,你需要生成的客户端库,如果你使用不同的版本生成客户端库,它会有很大的区别 - PHP客户端API是不同的,依赖关系是不同的,顺便说一句。彼此不兼容(你不能同时使用0.9和0.8的PHP thrift库)。你的意思是服务/ thirft客户本身,但没有额外的工作/知识,这是不可用。 – 2014-09-28 20:08:59