首先,我是一个完全的作曲家新手。我一直在尝试它,因为它听起来很棒,主要是因为Zend Framework 2使用了它。
Zend Framework 2实际上也是这个线程的原因。
它得到了Composer的基础知识。但是在我目前的服务器设置下,我有一个请求,我似乎无法弄清楚是否可能。
让我解释一下。
我有多个Zend Framework 2项目:
- /home/morten/网站/项目1/
- /home/morten/网站/项目2/
- /home/morten/网站/项目三/
所有这些项目都应该运行ZF2。当在每个项目中运行composer时,每个项目都可以单独下载ZF2库文件。这对我的设置来说有点多余。
我有一个完整和最新的ZF2库下载位于:/var/www/shared/Zend/
并且我的PHP .ini已经将该路径添加到PHP的include_path中,因此整个ZF2库可用于所有三个项目。
是否有可能让Composer在它的设置中使用?因为如果我试图改变一些东西,尝试在编写器文件中尝试一些东西,那么它只会重新下载Zend,因为它是其他模块所需的组件。
这能做到吗?如果是,我该怎么做?
希望我已经解释得足够好,让你们明白我在努力做什么,想要什么:)
提前感谢!
问候,Morten
你可能有一个 composer.json
文件存储在/var/www/shared/Zend
,你会把你的依赖关系和使用Composer来管理他们。然后所有项目都可以包含相同的自动加载器。
但是,我不推荐这种方法:
- 项目的依赖项(
composer.json
)应该与项目一起存储。如果您想在其他地方安装您的项目(例如,如果您想将一个项目移动到另一个服务器),您将错过composer.json
来安装所需的依赖项。 - 如果不更新所有其他项目的依赖项,就不可能更新一个项目的依赖项。如果您想在项目1中引入一个新功能,而该功能需要某个依赖项的新版本,那么所有其他项目也将获得这个新版本——如果项目2所依赖的旧功能不再受支持,这可能会导致向后兼容性中断。由于每个依赖项只能有一个版本,所以两个项目不可能有相同依赖项的不同版本。
如果所有项目都具有完全相同的功能和代码,这种方法可能有用,但在这种情况下,您可能应该将它们合并到一个项目中。
在所有其他情况下,我建议使用Composer的方式应该被使用:给所有项目自己的composer.json
文件,让Composer下载每个项目的依赖,在每个项目的vendor
目录。缺点是它将花费您更多的磁盘空间,但作为回报,您将获得很大的灵活性。