composer-docs/cn-introduction/faqs/why-are-version-constraints...

12 lines
983 B
Markdown
Raw Normal View History

# 为什么说“比较符”和“通配符”相结合的版本约束是坏主意?
2014-01-01 09:50:17 -05:00
这是人们常犯的一个错误,定义了类似 `>=2.*``>=1.1.*` 的版本约束。
2014-01-01 09:50:17 -05:00
通过思考它所表示的真正含义,你很快就会发现,它并没有多大意义。如果我们分解 `>=2.*`,你会得到两个部分:
2014-01-01 09:50:17 -05:00
- `>=2` 表示资源包应该是 2.0.0 或以上版本。
- `2.*` 表示资源包版本应该介于 2.0.0 (含)和 3.0.0(不含)之间。
2014-01-01 09:50:17 -05:00
正如你所看到的,要同时满足这两个规则包版本必须 >=2.0.0,但它是无法判断的,因为当你这么写的时候,你究竟是想要包含 3.0.0 版本还是不包含?它应该进行匹配吗?因为你定义了 `>=2`,但同时你又限制它为 `2.*`
2014-01-01 09:50:17 -05:00
出于这个原因Composer 将抛出一个错误,并告诉你这是无效的。想要确切的表达你意思,最简单的方法就是仅使用“比较符”和“通配符”其中的一种来定义约束。