何故、比較とワイルドカードが組み合わさったバージョン制約が良くないのか
>=2.*
や>=1.1*
のようなパッケージの要件でバージョン制約を定義することは、それなりによく見られる誤りです。
ただし本当に意味しているところを考えれば直ちに意味を成さないことに気付かれるでしょう。
>=2.*
を分解すると2つに分けられます。
>=2
はパッケージがバージョン2.0.0以上であるべきだとしています。2.*
は、パッケージがバージョン2.0.0(このバージョンを含む)と3.0.0(このバージョンを含まない)の間にあるべきだとしています。
見ての通り、両方の規則ではパッケージが2.0.0以上でなければならないという事実について合意されています。
しかし、それを書いた時にバージョン3.0.0のパッケージのことを考えていたかについては判定できないのです。
>=2
を求めたので照合すべきでしょうか。
それとも2.*
を求めたので照合しないべきでしょうか。
こうした理由からComposerはエラーを投げて不当であるとします。 修正するには本当に意味しているところについて考え、これらの規則のうち1つだけを使うことです。