공동으로 개발중인 라이브러리 [Foo and Bar]가 몇 개 있지만 기술적으로는 여전히 분리되어 있습니다. 이전에는 autoloader를 like로 다시 정의 "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 repo를 초기화했습니다.
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
!
sammitch/foo
는 패키지 이름이며 문자 그대로 위치와 관련이 없습니다. 구성된 리포지토리를 기반으로 사용 가능한 패키지 목록을 생성합니다.이 경우 지정된 로컬 git 리포지토리에서 composer.json을 가져온 다음 composer가 나머지를 처리합니다. sammitch/foo
패키지는 현재 응용 프로그램의 복사됩니다 vendor
폴더 다른 패키지와 같은.