是否只有在满足条件的情况下,才需要在composer.json
中具有依赖项?
通常,如果PHP版本足够高,我想使用Guzzle 6,否则什么也不做。如果您不知所措,该库将处理后备。
我知道您可以使用"some/dependency": "^1.0 || ^2.0"
,它将选择适合您其他要求的最新专业。我正在寻找的东西是这样的:
"some/dependency": "nothing || ^2.0"
答案 0 :(得分:1)
您不能直接在composer.json
中将其作为约束。但是,您可以通过创建桥包来实现此目的,该桥包可以为不同版本定义不同的依赖关系,从而可能有不同的要求。
因此您可以创建me/guzzle-wrapper
软件包,并:
用1.0.0
标记composer.json
版本:
{
"name": "me/guzzle-wrapper",
"require": {
"php": "<5.5",
}
}
用2.0.0
标记composer.json
版本:
{
"name": "me/guzzle-wrapper",
"require": {
"php": ">=5.5",
"guzzlehttp/guzzle": "^6.3"
}
}
因此,可以直接使用此meta包,而不是直接要求guzzlehttp/guzzle
-根据您的PHP版本,Composer将安装需要Guzzle的2.0.0
或不需要任何东西的1.0.0
。 / p>
但是,如果您的软件包能够在不使用Guzzle的情况下运行,也许您应该将此要求移至suggest
部分?