Php 如何安全地添加到composer软件包?

Php 如何安全地添加到composer软件包?,php,composer-php,omnipay,Php,Composer Php,Omnipay,我正在我的项目中使用这个包,我想在包中添加一个新类(在我的例子中,它支持一个新的支付网关)。命名不与任何内容冲突,并且遵循与同级文件夹相同的命名和结构约定。但是,当我运行composer update时,它会删除我的整个更改文件夹,即使它不需要这样做。有什么方法可以告诉composer不要删除该目录吗?据我所知,您不能添加到composer软件包中,因为它是外部的,因此不受您的控制。您应该仅将包视为库,并将所有类添加到您自己的项目中,确保您需要的包仍在.json文件中设置将所有内容放在/vend

我正在我的项目中使用这个包,我想在包中添加一个新类(在我的例子中,它支持一个新的支付网关)。命名不与任何内容冲突,并且遵循与同级文件夹相同的命名和结构约定。但是,当我运行
composer update
时,它会删除我的整个更改文件夹,即使它不需要这样做。有什么方法可以告诉composer不要删除该目录吗?

据我所知,您不能添加到composer软件包中,因为它是外部的,因此不受您的控制。您应该仅将包视为库,并将所有类添加到您自己的项目中,确保您需要的包仍在.json文件中设置

将所有内容放在
/vendor
下,不要更改其中的任何文件。您应该将库视为外部依赖项—不要将它们签入源代码管理或以任何方式更改它们。只需在您自己的代码中引用它们


如果需要自定义composer库,您可以在自己的代码中解决它(大多数PHP库支持依赖项注入,这将允许您覆盖库的任何类),或者您可以在github上分叉库,然后在
composer.json
中引用您自己的分叉,或者提交pull请求,这样每个人都可以从中受益。

我不认为答案是:)你确定你的包json是正确的吗?指定工作github url等?我通过
“require”:{“omnipay/omnipay”:“0.9.*”}
composer.phar更新输出说明了什么?除非有更新,否则什么都没有。软件包可以工作,我的添加也可以工作,但是当软件包有更新生成器时,会删除我的添加,但更新就是这样工作的-整个软件包(从供应商目录)会被删除。你们应该在单独的文件夹中使用你们的名称空间类,这样一旦包被更新,类就不会被删除。我可能会把它分叉。这种类型的扩展是不可能的,这似乎有点愚蠢。这并不愚蠢——你不应该修改外部库,否则你将无法在将来更新它们。只需在自己的代码中扩展单个类,这就是面向对象的方法。问题是,它们不是外部的,我正在进行的扩展类型即使在将来也是安全的