【问题标题】:Composer Versioning for Thrift Client LibrariesThrift 客户端库的 Composer 版本控制
【发布时间】:2014-11-21 11:55:48
【问题描述】:

我有一个使用 apache thrift 创建的服务和一个可用于生成客户端库的 *.thrift 文件。

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

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

我的想法是使用不同的 thrift 版本和标签预先生成服务,如下所示:

<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"

我能做什么?想法?

【问题讨论】:

    标签: php composer-php versioning thrift


    【解决方案1】:

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

    【讨论】:

    • 生成的代码并非在所有情况下都兼容!例如,在 thrift 0.8 和 0.9 之间添加了 PHP 命名空间,这是一个很大的 API 更改。顺便提一句。生成的代码需要同版本的 PHP thrift 库!见github.com/apache/thrift/tree/0.8.0/lib/php & github.com/apache/thrift/tree/0.9.1/lib/php
    • 服务的外部行为是向后兼容的,不一定是PHP相关的东西。再说一次,这很重要。没有人会处理你的代码,但会处理暴露的服务。
    • 我喜欢标记生成的 PHP 客户端库。服务本身有它的版本,很好。如果您喜欢将服务与 PHP 一起使用,您需要生成的客户端库,如果您使用不同的版本生成它会有很大的不同 - PHP 客户端 API 不同,依赖项不同,顺便说一句。互不兼容(不能同时使用 0.9 和 0.8 的 PHP thrift lib)。您的意思是服务/节俭客户端本身,但如果没有额外的工作/知识,这是无法使用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    相关资源
    最近更新 更多