约束1:我无法控制A
是什么类,也无法控制它来自哪个更大的软件的版本。我必须提交其规则。它没有版本控制,什么都没有,它只是我需要的一个类。我们谈论的是WordPress,所以,这些东西不会被添加到:)
限制 2:我必须按原样发货。我将无法将客户重定向到我的插件V5.1
。
我正在B
内部扩展一个类A
,我们现在在version 5.0
:
class B extends A
{
public function feedback( $string )
}
现在,如您所见,A
具有此函数feedback
,它只接受一个参数。一切都很好,它应该有效。但是,如果A
改变它会发生什么?好吧,升级到version 5.1
时,我们的feedback
函数如下所示:
public function feedback( $string, ...$args )
一旦我们重新运行代码,我们就会得到Declaration of B::feedback( $string ) must be compatible with A::feedback( $string, ...$args )
错误。
我希望我的客户能够在他们软件的几个版本上使用该产品。由于我的产品是一个插件,我必须尊重并尝试使其适用于所有这些版本。
我该如何处理?
如果您正在编写具有依赖项的软件,并且想要支持多个不兼容的版本,那么通常这意味着您还需要制作相同数量的自己的软件版本。
这不一定像您想象的那么难维护。拥有多个活动的 git 分支并不难,适用于每个"目标"的任何更改都可以合并或挑选。