Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在composer中指定项目根目录之外的依赖项_Php_Git_Build_Dependencies_Composer Php - Fatal编程技术网

Php 在composer中指定项目根目录之外的依赖项

Php 在composer中指定项目根目录之外的依赖项,php,git,build,dependencies,composer-php,Php,Git,Build,Dependencies,Composer Php,我有一个项目目录。每一项都来自git回购 其中一些项目是REST API,我希望所有内容都指定为项目依赖项,如下所示: htdocs |- restApi1 |- restApi2 |- Vendor |-Guzzle |- restApi3 htdocs |- restApi1 |- restApi2 |- Vendor |- Guzzle |- restApi1 |- restApi3 |- restApi3

我有一个项目目录。每一项都来自git回购

其中一些项目是REST API,我希望所有内容都指定为项目依赖项,如下所示:

htdocs
|- restApi1
|- restApi2
    |- Vendor
        |-Guzzle
|- restApi3
htdocs
|- restApi1
|- restApi2
    |- Vendor
        |- Guzzle
        |- restApi1
        |- restApi3
|- restApi3
所以项目2依赖于restApi1和restApi3。 如果在安装restApi2和构建时缺少restApi1或restApi3,我想做的是“git签出”。如果它已经被签出,在
composer安装
update
时,我希望它
git pull
并重建为自定义命令,就是这样。 由于我将这些设置作为项目,并且我可能正在跨两个项目进行更改,如果我将其作为依赖项拉入,则如下所示:

htdocs
|- restApi1
|- restApi2
    |- Vendor
        |-Guzzle
|- restApi3
htdocs
|- restApi1
|- restApi2
    |- Vendor
        |- Guzzle
        |- restApi1
        |- restApi3
|- restApi3
我必须把我的更改拉到他们的repo中,工作到新的url,这会打乱我的工作流程。 由于我是通过本地主机上的http访问这些项目的,所以我可以从任何地方查看任何版本,并将所有内容都视为一个大项目,我的所有代码库只出现一次

我想知道在《作曲家》中是否有这样做的方法,或者这是一种错误的方法。 如果有更好的方法来解决上述问题,我也愿意改变我的流程。
我曾考虑编写一个脚本,在
htdocs
上运行,该脚本可以快速完成并提取所有内容,但我认为在composer文件中将其他项目指定为一个依赖项可以揭示更多关于我们内部项目如何相互使用的信息。

您可以将restApi1和restApi3添加到composer.json:

"require" : {
    ...
    "myproject/restApi1": "dev-master",
    "myproject/restApi3": "dev-master"
},
"repositories": {
    "myproject/restApi1": {
        "url": "https://github.com/myproject/restApi1.git",
        "type":"git"
    },
    "myproject/restApi3": {
        "url": "https://github.com/myproject/restApi3.git",
        "type":"git"
    },
}
然后,每当您需要新的更新时,编写器都会更新


另一个选择是使用。

我对vhost使用了这种方法,因为我是用HTTP而不是自动加载程序来实现的,但是,我是用
require dev
实现的。这意味着我的开发副本和用于测试的副本是完全分开的,而且通过这种方式,我有一种确定的方法来确定我的应用程序中使用了什么。