Menu

4.7. 为何版本限制与对比符、通配符配合使用是个糟糕的行为?

为何版本限制与对比符、通配符配合使用是个糟糕的行为?

这是一个人们常犯的错误,他们在包里定义了版本限制要求>=2.*>=1.1*

如果你认真思考过它的意思,你就会知道这么做没有任何意义。如果我们分析一下>=2.*,你就会发现它包含两种规则:

  • >=2表示包版本是 2.0.0 或以上。
  • 2.*表示包版本在 2.0.0(包含)到 3.0.0 (不含)之间。

正如你所看到的,这两条规则都要求包版本 >= 2.0.0,但是它无法确定是否包含 3.0.0 版本。它是应该匹配呢?因为你要求包版本>=2。还是不应该匹配呢?因为你要求包版本是2.*

对于这种情况,Composer 会抛出一个错误,告诉你这是无效的。解决这种问题的简单做法是考虑清楚你的真正意图,然后使用这两条规则的其中之一。

本文章首发在 Laravel China 社区
上一篇 下一篇
讨论数量: 0
发起讨论


暂无话题~