如果条件*,PHP Composer需要依赖

时间:2018-07-13 22:32:31

标签: composer-php

是否只有在满足条件的情况下,才需要在composer.json中具有依赖项?

通常,如果PHP版本足够高,我想使用Guzzle 6,否则什么也不做。如果您不知所措,该库将处理后备。

我知道您可以使用"some/dependency": "^1.0 || ^2.0",它将选择适合您其他要求的最新专业。我正在寻找的东西是这样的:

"some/dependency": "nothing || ^2.0"

1 个答案:

答案 0 :(得分:1)

您不能直接在composer.json中将其作为约束。但是,您可以通过创建桥包来实现此目的,该桥包可以为不同版本定义不同的依赖关系,从而可能有不同的要求。

因此您可以创建me/guzzle-wrapper软件包,并:

  1. 1.0.0标记composer.json版本:

    {
        "name": "me/guzzle-wrapper",
        "require": {
            "php": "<5.5",
        }
    }
    
  2. 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部分?