Php 为多个编写器使用一个目录

Php 为多个编写器使用一个目录,php,composer-php,Php,Composer Php,我将把这个问题改写得更清楚。我有以下应用程序结构: applications/ api/ public/ composer.json frontend/ public/ composer.json backend/ public/ composer.json common/ vendor/ ... composer libraries here 如何使每个应用程序的com

我将把这个问题改写得更清楚。我有以下应用程序结构:

applications/
   api/
      public/
      composer.json
   frontend/
      public/
      composer.json
   backend/
      public/
      composer.json
   common/
      vendor/
        ... composer libraries here
如何使每个应用程序的composer安装都安装到
common/vendor
,这样我就可以在任何地方使用最新版本的库,只需一次
composer更新
;同时只加载每个应用程序的
composer.json
文件中的库。因此,当我包括
vendor/autoload.php
时,只加载所需的库


编辑:编辑整个问题。请重新阅读

您必须创建一个更大的元项目,该项目需要API包、前端和后端。您可以定义应该使用哪个目录来放置此元项目的依赖项,并且应该能够为特殊包API、前端和后端定义它们应该进入各自的目录而不是公共文件夹

更新该元包将必须检查更多依赖项,但可以保证获得符合版本约束的最新版本(如果其中一个包需要较低版本,则可能无法安装可用的最新版本)。这样,您将避免安装其中一个项目不允许的依赖项,并且如果您尝试安装冲突版本,您将立即收到通知

请注意,我根本不建议这样做。我将编写一个脚本,将其放在
applications/updatecomposer.sh
中,并添加所有必要的命令,以分别更新每个项目。您获得了Composer所提供的所有灵活性,因为本质上您希望恢复PEAR的中央库安装。这种集中安装以及由此导致的无法更新任何PEAR包而不冒损坏的风险是PEAR被视为死亡的原因之一

或者考虑任何预编写器原始框架,如Zend framework 1。如果您不准备同时处理所有应用程序中的不兼容问题,那么将其安装在每个应用程序使用的中心点将有效地阻止您对其进行更新。举个例子:从任何ZF 1.11更新到ZF 1.12(当前维护的最新版本)可能是向后不兼容的更改,因为至少有一个抽象类(处理REST接口)得到了必须实现的新抽象方法