我正在开发WordPress插件。WordPress中的每个插件都是一个单独的软件,WordPress中没有依赖管理,因此插件不知道其他插件及其依赖项。PHP 的问题在于 Composer 中安装的所有依赖项都是全局的。
让我们想象一下,我的插件使用了一个流行的PHP库 - Symfony,或者Guzzle,比方说。更受欢迎的库 = 冲突的可能性更大。
有什么办法可以避免冲突吗?我正在网络上搜索 Composer 沙盒解决方案或类似解决方案,但我什么也没找到 - 所以恐怕解决方案不存在。
另一方面,我可以想象一个不涉及任何火箭科学的解决方案。我可以想象一个部署前构建脚本,该脚本将扫描/vendor
目录并用自定义前缀为所有依赖项添加前缀。
是否有任何工具或任何技术可以在 PHP 中提供依赖隔离?
是否有任何工具或任何技术可以提供依赖关系 PHP 中的隔离?
我认为这可能是对你问题的回答:如何使用作曲家获取多个供应商目录?
每个库都有自己的命名空间,由作者定义。如果您碰巧在不同的插件上使用相同的库,则可能需要分叉并更改要包含在插件中的库的命名空间,或者仅使用class_exists。