Php 使用Composer,可以在多个项目之间共享依赖关系吗?

Php 使用Composer,可以在多个项目之间共享依赖关系吗?,php,zend-framework2,composer-php,dependency-management,Php,Zend Framework2,Composer Php,Dependency Management,首先,我对作曲完全是个新手。我一直在尝试它,因为它听起来很棒,主要是因为Zend Framework 2使用了它 Zend Framework 2实际上也是这个线程的原因 它得到了作曲家的基本知识。但在我目前的服务器设置中,我有一个请求,如果可能的话,我似乎无法确定 让我解释一下 我有多个Zend Framework 2项目: /住宅/摩顿/场地/项目-1/ /住宅/摩顿/场地/项目-2/ /住宅/摩顿/场地/项目-3/ 所有这些项目都应该运行ZF2。在每个项目中运行composer时,每个

首先,我对作曲完全是个新手。我一直在尝试它,因为它听起来很棒,主要是因为Zend Framework 2使用了它

Zend Framework 2实际上也是这个线程的原因

它得到了作曲家的基本知识。但在我目前的服务器设置中,我有一个请求,如果可能的话,我似乎无法确定

让我解释一下

我有多个Zend Framework 2项目:

  • /住宅/摩顿/场地/项目-1/
  • /住宅/摩顿/场地/项目-2/
  • /住宅/摩顿/场地/项目-3/
所有这些项目都应该运行ZF2。在每个项目中运行composer时,每个项目都会单独下载ZF2库文件。这对我的设置来说有点多余

我有一个完整且最新的ZF2库下载,位于: /var/www/shared/Zend/

我的php.ini将该路径添加到php的include_路径中,因此整个ZF2库可用于所有三个项目

是否有可能使Composer在其设置中使用。因为如果我尝试在composer文件中更改内容并进行尝试,那么它只会重新下载Zend,因为它是其他模块所必需的组件

这能做到吗?如果是,我怎么做

希望我对自己的解释足够好,让你们能够理解我想要做什么:)

提前多谢

问候,, Morten

您可能能够在
/var/www/shared/Zend
中存储一个
composer.json
文件,您可以在其中放置依赖项并使用composer来管理它们。然后所有项目都可以包含相同的自动加载器

但是,我不建议采用这种方法:

  • 项目的依赖项(
    composer.json
    )应该与项目一起存储。如果要在其他地方安装项目(例如,如果要将一个项目移动到另一台服务器),则缺少安装所需依赖项的
    composer.json
  • 如果不更新所有其他项目的依赖项,则无法更新一个项目的依赖项。如果您想在项目1中引入一个新功能,它需要某个依赖项的新版本,那么所有其他项目也将获得此新版本-如果项目2所依赖的旧功能不再受支持,这可能会导致向后兼容性中断。因为每个依赖项只能有一个版本,所以两个项目不可能有相同依赖项的不同版本
如果所有项目都具有完全相同的功能和代码,那么这种方法可能很有用,但在这种情况下,您可能应该将它们合并到一个项目中


在所有其他情况下,我建议按预期的方式使用Composer:为所有项目提供自己的
Composer.json
文件,并让Composer在每个项目的
供应商
目录中下载每个项目的依赖项。缺点是它会花费您多一点磁盘空间,但反过来您会得到很大的灵活性。

我要强调的是,Composer的关键功能是不安装中央库。是的,如果你在任何地方都使用相同的版本,它会占用一点不必要的磁盘空间。但是,您不必在任何地方都使用相同的版本,并且用新版本更新第一个项目不会破坏其余的项目。它可以一次完成一个项目。