【发布时间】:2020-07-03 18:33:33
【问题描述】:
限制 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 ) 错误。
我希望我的客户能够在其软件的几个版本上使用该产品。由于我的产品是一个插件,我必须尊重并努力使其适用于所有这些版本。
我该如何处理?
【问题讨论】:
-
使用semver版本,让消费者放心
-
@LawrenceCherone 我没有这个选择。
A类不是我可以控制的,也不是整个软件的版本。我必须服从他们的规则。 -
如果您依赖的库不支持向后兼容性 - 那么您必须维护软件的多个版本
-
@IłyaBursov 该死。你能给我链接一些关于如何确保想要使用我的代码的开发人员不会发生这种情况的好文章吗?专门用于 PHP。
标签: php versioning