의존성 지옥을 해결하기 위해 프로그래밍 언어(ruby 의 bundler, Node.js 의 NPM, python 의 pip, 자바의 maven, gradle등) 마다 나름의 패키지 관리자가 있어서 의존성 문제를 해결하고 있습니다.

컴포저는 이와 동일한 역할을 수행하는 PHP의 의존성 관리자로 전 절에서 설명한 PHP 를 사용할 때 발생하는 여러 가지 문제를 간단한 의존성 선언만으로 해결해 줍니다.


손쉬운 라이브러리 관리

컴포저는 install 과 update 명령어를 제공하므로 이를 실행하면 의존성 정의 파일을 읽어서 현재 프로젝트의 모든 의존성을 확인하여 라이브러리를 설치 및 업그레이드 해줍니다.

새로운 라이브러리로 인해 버그나 문제가 발생했을 경우 해당 라이브러리의 다운 그레이드 버전을 지정하면 간단하게 다운 그레이드가 가능해 집니다.


의존성 지옥 해결

라이브러리가 유의적 버전을 따라서 개발되었다면 컴포저의 버전 관리 기능을 사용하여 의존성 지옥을 벗어날 수 있습니다. 아래는 PHP 의 유명한 단위 테스트 도구인 PHPUnit 의 의존성 트리로 컴포저는 아래와 같이 복잡한 의존성도 사용할 PHPUnit 의 버전만 지정하면 손쉽게 설치 및 사용이 가능합니다.



프로젝트별 의존성 분리

컴포저는 의존성을 관리할 때 라이브러리를 시스템 전역적으로 설치하지 않고 프로젝트마다 개별적으로 설치(예: vendor 폴더)하여 관리합니다.

그러므로 프로젝트내 특정 라이브러리가 업데이트 되었는데 이 라이브러리의 예전 버전을 다른 프로젝트에서 사용하고 있어도 서로 영향을 주지 않고 안정적으로 동작할 수 있습니다.


그러면 의존성을 선언하고 관리하기 위한 컴포저의 주요 사용법에 대해서 알아 보겠습니다.