У меня есть пара библиотек [Foo и Bar], которые я разрабатываю совместно, но все еще технически отдельные вещи. Раньше я просто переопределил автозагрузчик, чтобы он понравился "Foo\\": "../Foo/src"
, но теперь, когда я добавил зависимость Guzzle к Foo, 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
!