2015-12-04 106 views
2

我正在爲一個項目編寫一個新的composer.json文件,以便它可以提供或Packagist或直接引用其GitHub回購。該項目需要一個或兩個HTTP客戶端擴展,pecl_httpcurl。如果我在require下指定了兩個包,如果兩者都未安裝,Composer將發出錯誤。PHP作曲家:至少需要一個依賴關係?

我該如何告訴Composer可以安裝這兩個擴展中的一個?

回答

0

您不能以一種只需要這些擴展名之一的方式來定義它,但如果沒有任何擴展名,則會使Composer失敗。

軟件包的常用方法是將擴展名稱作爲「建議」。你的代碼已經必須處理檢測哪個擴展存在,並選擇正確的代碼路徑,如果所有都丟失,發出錯誤沒有其他問題。

或者,有兩個包與它們的依賴關係完全在一個擴展上。或者在其上面有一個主包,它建議兩個實現包,並通過它的接口清楚說明開發人員必須提供至少一個實現。

另一方面:處理HTTP東西看起來應該可能依賴於PSR-7接口,並讓開發人員選擇使用的HTTP客戶端實現。

相關問題