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


PHP Composer: Require at least one dependency or another?

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

我怎样才能告诉Composer只安装这两个扩展中的一个就可以了?

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

对于软件包,通常的方式是将扩展称为"建议"。您的代码已经必须处理检测存在的扩展并选择正确的代码路径,如果所有扩展都缺失,则发出错误也没有额外的问题。

或者,有两个包,它们的依赖关系正好依赖于一个扩展。或者在上面有一个主包,它建议使用两个实现包,并通过它的接口表明开发人员必须提供至少一个实现。

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