【发布时间】:2016-09-18 09:58:27
【问题描述】:
假设我们有一个 PHP 项目,其依赖项 A 和 B 分别依赖于 PHP 库 X,但版本不同。
通常,人们会使用 PHP 依赖管理器,例如 composer,它可以通过在兼容 A 和 B 的版本中包含 X 来解决此冲突 或在无法解决冲突时显示错误。
现在,许多 PHP 应用程序允许其用户安装插件,只需上传预先捆绑的包并将它们解压缩到特定的插件目录即可。
如果 A 和 B 是这样的预捆绑插件,并且两者都带有自己的库版本 X,我们可能会遇到问题因为没有依赖管理器可以为我们选择兼容的 X 或在没有时显示错误。
为了防止由于 PHP 无法将不同版本的库 X 两次加载到同一个命名空间中而导致的任何此类冲突,我们可以将 A 的 X 和 B 的 X 进入不同的命名空间(这可能很难自动完成,因为我们需要一个 PHP 解析器...) .
我的问题是:
- 您将如何解决这个问题?您能推荐这种方法还是有更好的解决方案?
【问题讨论】:
标签: php namespaces composer-php version conflict