假设我们有一个PHP项目,其依赖项A和B各取决于PHP库X,但是在不同的版本中.
通常,可以使用PHP依赖项管理器(如composer)来解决此冲突,方法是将X包含在与A和B兼容的版本中,或者如果无法解决冲突则显示错误.
现在,许多PHP应用程序允许用户只需上传预先捆绑的包并将其提取到特定的插件目录即可安装插件.
如果A和B是这样的预捆绑插件并且两者都带有他们自己的库X版本,我们可能会遇到问题,因为没有依赖管理器可用于为我们选择兼容的X或在没有的情况下显示错误.
为了防止由于PHP无法将库X以不同版本加载两次到同一名称空间而导致的任何此类冲突,我们可以将A的X和B的X放入不同的名称空间(这可能很难自动完成我们需要一个PHP解析器...).
我的问题是: