symfony - composer 如何处理同一个包的多个版本?

标签 symfony composer-php

这可能(应该)在某处之前被问过,但我似乎无法找到答案。如果有人提供链接,我可以删除此帖子!:

只是想了解一下 composer 的一些(可能也适用于其他包管理器)的功能。

基本上我只想知道 composer 在以下场景中做了什么:

1.

我的主要项目有一个依赖项:

"guzzlehttp/guzzle": "5.0.*",

我的外部包依赖于
"guzzlehttp/guzzle": "5.0.*",

composer 是否安装 guzzlehttp/guzzle 一次,因为它知道它只需要它一次?

2.
相同的场景,但将来如果有人更新主项目以使用:
"guzzlehttp/guzzle": "6.0.*",

Composer 现在会安装 2 个版本的 guzzle(5 和 6)(我认为这是它应该做的),还是会采用最高版本(即 6)?此外,如果有 2 个版本,这是否会导致任何冲突,因为命名空间可能相同?

谢谢

最佳答案

对问题 1

是 Composer 只能安装每个扩展/包的一个版本。

对问题 2

因为答案 1:Composer 会认为您的主项目和外部包不兼容。

在这种情况下你可以

  • 在您的主要项目中也使用第 5 版。
  • 如果兼容,请要求外部软件包所有者也升级到版本 6。
  • fork 外部包并使其兼容版本 6
  • 关于symfony - composer 如何处理同一个包的多个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27150695/

    相关文章:

    java - 适合 Java 的命令行解析和执行

    php - 如何在 Symfony 2 控制台命令中使用我的实体和实体管理器?

    symfony - 是否可以禁用 Symfony 2 事件监听器然后重新启用它

    symfony - 在自定义 twig_variable.yml 中注入(inject)全局 twig 变量

    windows - 无法使用 Composer 在 Windows 上安装 Mailgun 库

    php - 从 Composer 包中排除文件

    composer-php - hh_client 报告包错误

    php - 删除与 EntityManager 的多对多关系的对象部分返回错误

    docker - ddev 为共享 Composer 包挂载其他文件夹

    php - Composer 更新内存限制