我正在为一个项目编写一个新的composer.json文件,以便它可以使用,或者Packagist或直接引用它的GitHub仓库。该项目需要一个或两个HTTP客户端扩展,pecl_http
或curl
。如果我在require
下指定了两个软件包,则如果两个软件包都没有安装,则Composer会给出错误。
如何告诉Composer可以安装这两个扩展中的一个?
答案 0 :(得分:1)
您无法以只需要其中一个扩展名的方式定义它,但如果没有,则会使Composer失败。
包的常用方法是提及扩展名为"建议"。您的代码已经必须处理检测哪个扩展存在并选择正确的代码路径,如果全部丢失则发出错误没有其他问题。
或者,有两个包完全依赖于一个扩展的包。或者有一个主要的包,它建议两个实现包,并通过它的接口清楚地表明开发人员必须提供至少一个实现。
另一方面:处理HTTP内容看起来应该依赖于PSR-7接口,并让开发人员选择要使用的HTTP客户端实现。