PHP Composer:至少需要一个依赖项或另一个依赖项?

时间:2015-12-04 18:47:48

标签: php composer-php

我正在为一个项目编写一个新的composer.json文件,以便它可以使用,或者Packagist或直接引用它的GitHub仓库。该项目需要一个或两个HTTP客户端扩展,pecl_httpcurl。如果我在require下指定了两个软件包,则如果两个软件包都没有安装,则Composer会给出错误。

如何告诉Composer可以安装这两个扩展中的一个?

1 个答案:

答案 0 :(得分:1)

您无法以只需要其中一个扩展名的方式定义它,但如果没有,则会使Composer失败。

包的常用方法是提及扩展名为"建议"。您的代码已经必须处理检测哪个扩展存在并选择正确的代码路径,如果全部丢失则发出错误没有其他问题。

或者,有两个包完全依赖于一个扩展的包。或者有一个主要的包,它建议两个实现包,并通过它的接口清楚地表明开发人员必须提供至少一个实现。

另一方面:处理HTTP内容看起来应该依赖于PSR-7接口,并让开发人员选择要使用的HTTP客户端实现。