如何在 Shopware 6 插件 ZIP 中包含重叠的作曲家依赖项?
How to include overlapping composer dependencies in a Shopware 6 plugin ZIP?
将 Shopware 插件作为 ZIP 文件分发时,它必须包含 vendor
目录,但不包含 shopware/core
、shopware/administration
等在 [=14= 中定义的依赖项].我上班的那个。
但是如何包含与 shopware/core
依赖项重叠的依赖项,这些依赖项本身具有依赖项?
明确地说,我尝试添加一个依赖于(如 Shopware 本身)psr/cache
的包。
但是当我包含它时,在激活插件时收到以下错误消息:
Fatal error: Cannot declare interface Psr\Cache\CacheItemPoolInterface, because the name is already in use in /var/www/html/vendor/psr/cache/src/CacheItemPoolInterface.php on line 14
是否有解决此类问题的已知工作流程? Shopware 提供的文档没有解释如何解决这些类型的冲突。
如果是你的插件,那么有3个选项。
- 需要相同的包
- 使用 https://github.com/humbug/php-scoper 之类的工具来解决命名问题。
- 通过作曲家安装
如果不是你的,你应该为插件提供商创建一个问题。
如果您为 Shopware 分发插件并使用 Composer 库,您会发现范围和命名空间冲突,例如 Fatal error: Cannot declare interface...
。在 WordPress、Joomla、PrestaShop 或您不了解的任何其他 CMS 上也发现了同样的问题无法完全控制安装的内容。
如您所述,最初的问题是核心库与您的插件依赖项之间存在冲突。此外,您会发现系统上安装的每个包之间存在问题,这些包使用相同的库或相同库的不同版本将 Composer 包复制到 Shopware。
实际上,唯一真正和最灵活的解决方案是在您捆绑在 ZIP 文件中的 PHP 代码前加上前缀。通过这种方式,您可以完全确定它的工作独立于与它一起安装的内容。
在PHP生态系统中,有一些为命名空间添加前缀和自定义项目范围的解决方案。例如:php-scope、namespacer、mozart 或 PHP-Prefixer.
免责声明:我是领先的 PHP-Prefixer 开发人员。
将 Shopware 插件作为 ZIP 文件分发时,它必须包含 vendor
目录,但不包含 shopware/core
、shopware/administration
等在 [=14= 中定义的依赖项].我上班的那个。
但是如何包含与 shopware/core
依赖项重叠的依赖项,这些依赖项本身具有依赖项?
明确地说,我尝试添加一个依赖于(如 Shopware 本身)psr/cache
的包。
但是当我包含它时,在激活插件时收到以下错误消息:
Fatal error: Cannot declare interface Psr\Cache\CacheItemPoolInterface, because the name is already in use in /var/www/html/vendor/psr/cache/src/CacheItemPoolInterface.php on line 14
是否有解决此类问题的已知工作流程? Shopware 提供的文档没有解释如何解决这些类型的冲突。
如果是你的插件,那么有3个选项。
- 需要相同的包
- 使用 https://github.com/humbug/php-scoper 之类的工具来解决命名问题。
- 通过作曲家安装
如果不是你的,你应该为插件提供商创建一个问题。
如果您为 Shopware 分发插件并使用 Composer 库,您会发现范围和命名空间冲突,例如 Fatal error: Cannot declare interface...
。在 WordPress、Joomla、PrestaShop 或您不了解的任何其他 CMS 上也发现了同样的问题无法完全控制安装的内容。
如您所述,最初的问题是核心库与您的插件依赖项之间存在冲突。此外,您会发现系统上安装的每个包之间存在问题,这些包使用相同的库或相同库的不同版本将 Composer 包复制到 Shopware。
实际上,唯一真正和最灵活的解决方案是在您捆绑在 ZIP 文件中的 PHP 代码前加上前缀。通过这种方式,您可以完全确定它的工作独立于与它一起安装的内容。
在PHP生态系统中,有一些为命名空间添加前缀和自定义项目范围的解决方案。例如:php-scope、namespacer、mozart 或 PHP-Prefixer.
免责声明:我是领先的 PHP-Prefixer 开发人员。