티스토리 뷰


Composer(이하 컴포저)는 PHP에서 사용하는 의존성 관리도구입니다. 컴포저를 이용하면 프로젝트에서 사용하는 라이브러리들을 선언하고 의존성을 해결해주며 설치까지 해줍니다. Node.JS의 NPM, ruby의 bundler, gem 같은 패키지 관리 도구와 비슷하며 실제로 컴포저는 NPM과 bundler에서 영감을 얻었다고 합니다.컴포저는 패키지 관리도구라고 하지 않으며 의존성 관리도구라고 합니다.


컴포저로 해결되는 문제는 아래와 같습니다.


- 여러 라이브러리에 의존하는 프로젝트일 경우.

- 이러한 라이브러리들은 또다른 라이브러리를 필요 합니다.

- 이때 필요한 의존 관계의 라이브러리들을 지정할 수 있습니다.

- 컴포저는 패키지가 설치되어야 하는 버전을 찾아, 알맞은 버전의 패키지들과 의존 패키지들을 설치합니다(프로젝트 디렉토리로 다운로드 한다는 의미입니다).


의존성 선언

프로젝트를 생성할 때 필요한 라이브러리를 선언해줘야 합니다. 컴포저 사이트 매뉴얼에 있는 monolog/monolog 라이브러리를 예시로 들겠습니다.


이 라이브러리를 프로젝트에 추가하기 위해선 composer.json 파일에 아래와 같이 입력해주시면 됩니다.

{
    "require": {
        "monolog/monolog": "1.2.*"
    }
}

이렇게 입력하시면 해당 프로젝트에는 monolog 1.2버전의 라이브러리가 필요하다는 걸 표시해주는 것입니다.

(여기서 언급한 monolog는 php 5.3이상에서 작동하는 로깅 프레임워크입니다. Laravel에서도 사용하는 프레임워크이며, php 표준 권고인 psr-3인 Logger Interface 규약을 지키고 있는 프레임워크입니다.)


시스템 요구사항

컴포저는 PHP 5.3.2 이상부터 사용이 가능합니다. 몇가지 PHP 설정이 필요한데 인스톨러를 이용하여 설치 할 경우 비호환성을 체크하여 표시해준다고 합니다.

소스로부터 패키지 설치 시 zip 파일 대신 git. svn 또는 hg가 필요할 수도 있다고 합니다. 컴포저는 멀티 플랫폼을 지원하여 윈도우, 맥, 리눅스 모두 동일하게 동작합니다.


설치방법

Linux / Unix / OSX 에서의 설치 방법

로컬 설치방법과 글로벌 설치방법이 있는데 저는 글로벌 설치방법에 대해서만 설명 드리겠습니다.(로컬로 설치해서 쓸 일이 없을듯 합니다.)


터미널에서 아래의 명령어를 입력해 주시기 바랍니다.

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

그 이후 터미널에서 composer 라는 명령어를 이용하여 사용이 가능합니다.


window에서의 설치 방법

윈도우에서는 수동으로 설치하는 방법이 있으나 인스톨러를 이용한 설치 방법만 설명드리겠습니다. 차이가 없으며 오히려 인스톨러쪽이 간편합니다.


해당 링크에서 인스톨러를 다운로드 받으신 후 설치를 진행하시면 됩니다. 설치가 완료되면 path 설정이 자동으로 되기 때문에 composer 명령어를 바로 사용이 가능합니다.


Composer 사용하기

아까 작성하였던 composer.json 파일 있는 경로에서 아래의 명령어를 입력하면 선언해둔 의존성 라이브러리들을 설치합니다.

composer install

아까 composer.json에 선언해둔 monolog/monolog 라이브러리를 vendor/monolog/monolog 경로에 자동으로 설치가 됩니다.


Autoloading

라이브러리를 받는 일 말고 컴포저는 설치된 라이브러리들의 클래스를 자동으로 불러올 수 있도록 autoloading을 준비합니다. autoloading을 하기 위해서는 아래의 소스를 입력하시면 됩니다.

require 'vendor/autoload.php';

그 다음부터는 컴포저로 설치한 monolog 라이브러리를 사용이 가능해집니다. 더 자세한 사용 법은 다음 포스트에서 다루도록 하겠습니다.

이 포스트는 컴포저 매뉴얼 사이트인 getcomposer - getting started의 내용을 토대로 작성하였습니다.

댓글