我有几个正在协同开发的库 [Foo 和 Bar],但在技术上仍然是独立的。以前我刚刚重新定义了自动加载器"Foo\\": "../Foo/src"
,但现在我已经向 Foo 添加了 Guzzle 依赖项,Bar 翻转了它的盖子,因为它不是它的依赖项之一。
目录结构:
/home/user/src/
Foo/
src/
FooClient.php
composer.json
Bar/
src/
BarClient.php
composer.json
理论自动加载语句:[在 Bar/composer.json 中]
"require": {
"local": "../Foo/composer.json"
}
示例代码:
require('vendor/autoload.php');
$f = new \Bar\BarClient(new \Foo\FooClient());
在不设置本地 Composer 存储库的情况下如何解决此问题?我想将它们作为单独的包进行维护,只是一个包需要另一个包,因此处理另一个包的依赖关系。
答案后编辑:
感谢 infomaniac 我做了以下事情:
初始化 git 存储库:
cd ~/src/Foo && git init && echo -e "vendor\ncomposer.lock" > .gitignore && git add ./ && git commit -m "Initial Commit"
添加了作曲家配置:
"require": {
"sammitch/foo": "dev-master"
},
"repositories": [{
"type": "vcs",
"url": "/home/sammitch/src/Foo"
}],
进而composer update
!
链接到本地开发中的包的方法是首先添加到您的主项目中composer.json
a 存储库, 像这样:
"repositories": [
{
"type": "path",
"url": "/full/or/relative/path/to/development/package"
}
]
您还需要在开发包中指定一个版本composer.json
或者我这样做的方式是要求使用包@dev
, 像这样:
composer require "vendorname/packagename @dev"
它应该输出:
- Installing vendor/packagename (dev-develop)
Symlinked from /full/or/relative/path/to/development/package
The @dev
require 命令很重要,composer 使用它来获取源代码并将其符号链接到您的新包。
这是添加到版本约束中的稳定性标志(请参阅包链接).
这些允许您进一步限制或扩展
包的稳定性超出了范围最小稳定性环境。
最低稳定性标志是:
可用选项(按稳定性顺序)是dev
, alpha
, beta
, RC
, and stable
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)