2013-07-11 41 views
1

我在我的項目中使用ComposerOmnipay,我想向包中添加一個新類(在我的情況下,它支持新的支付網關)。命名與任何內容都不衝突,它遵循與兄弟文件夾相同的命名和結構約定。但是,當我運行composer update時,它會刪除我的整個修改文件夾,即使它不需要。有沒有辦法告訴作曲家不要刪除該目錄?如何安全地添加到作曲家包?

+0

你確定你的包json是正確的嗎?指定工作的Github網址等? –

+0

我通過'「require」包含它:{「omnipay/omnipay」:「0.9。*」}' – nathanjosiah

+0

composer.phar更新輸出說什麼? –

回答

0

把所有東西都放在/vendor之內,不要在那裏改變任何文件。您應該將庫視爲外部依賴項 - 不要將它們檢入源代碼管理或以任何方式更改它們。只需在您自己的代碼中引用它們。

如果您需要定製一個作曲家庫,您可以在自己的代碼中解決它(大多數PHP庫支持依賴注入,這可以讓您覆蓋任何庫的類),或者您可以將github上的庫,然後在composer.json中引用你自己的分支,或者提交拉取請求,這樣每個人都可以從中受益。

+0

我可能會最終分叉它。似乎有點愚蠢,這種類型的擴展是不可能的。 – nathanjosiah

+1

這不是愚蠢 - 你不應該修改外部庫,否則你將來無法更新它們。只需在自己的代碼中擴展單個類,這就是面向對象的方式。 –

+0

事情是,它們不是外部的,我所做的擴展類型即使對未來也是安全的 – nathanjosiah

0

據我所知,你不能添加到Composer軟件包,因爲它是外部的,因此不受你的控制。你應該把這些軟件包當作庫來處理,然後把所有的類加入到你自己的項目中,確保你所需要的軟件包仍然在你的.json文件中。

+0

我不認爲這個答案:) –