7.06. 의존성 라이브러리 관리자 컴포저

현대의 개발은 대부분 모든 걸 직접 만드는 것이 아니라 타인이 만들어놓은 라이브러리를 가져다 쓰면서 작업하게 된다. 이를 수월하게 만들어주는 의존성 라이브러리 관리자인 컴포저를 사용해본다.

컴포저는 php에서 사용하는 의존성 관리 라이브러리이다. 필요한 라이브러리와 버전을 기술해 놓으면 명시한 라이브러리 뿐만 아니라 라이브러리가 필요로하는 다른 라이브러리까지 찾아서 한번에 설치해 준다.


윈도우 버전 컴포저는 설치 배포판이 있지만 다운로드해서 설치해보면 오류가 나는 경우가 잦다. 따라서 직접 커맨드 쉘에서 다운로드하는 편이 정신건강에 이롭다.
커맨드가 복잡하므로 https://getcomposer.org/download/ 에서 복사해서 사용하는 것이 편하다.

터미널에서 실행한다. 한 줄씩 실행해야 한다. 윈도우즈를 사용한다면 윈도우즈 키를 누른 후 cmd명령어로 터미널에 진입할 수 있다.

D:\programs\xampp\php\php.exe -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
D:\programs\xampp\php\php.exe composer-setup.php
D:\programs\xampp\php\php.exe -r "unlink('composer-setup.php');"

컴포저 설치 후 사용하기 위해서는 composer.json 파일이 필요하다.

컴포저 초기화를 위해 컴포저는 질문/응답식으로 composer.json 파일을 만들 수 있는 기능을 제공한다.

D:\programs\xampp\php\php.exe composer.phar init

몇가지 질문에 대답하면 composer.json 파일이 생성된다.

물론 직접 만들어도 무관하다. 아무 편집기나 열고 composer.json을 아래 내용으로 저장하자.

{
    "name": "yse/composer_test",
    "require": {}
}

컴포저를 이용해 라이브러리를 설치하고 싶다면 composer.json 파일에 내용을 기술한다.

{
    "name": "yse/composer_test",
    "require": {
        "monolog/monolog": "1.2.*"
    }
}

require는 필요한 의존성을 정의하는 곳이다.


만일 직접 composer.json 파일을 수정하기 싫다면 커맨드에서도 설치할 수 있다.

composer  require 사용할 라이브러리

composer require "monolog/monolog" "~1.12" 를 커맨드로 입력한다. 컴포저가 스스로 composer.json 을 수정한다.

"monolog/monolog"는 라이브러리 이름이고, ~1.12는 최소 버전을 명시하는 것이다.


컴포저에 기술한 라이브러리들을 내 프로젝트에 사용한다.

D:\programs\xampp\php\php.exe composer.phar install

컴포저를 통한 다운로드가 끝나면 vendor 디렉토리 안에 필요한 라이브러리가 설치되어 있다.


다운받은 라이브러리를 사용한다.

<?php

require 'vendor/autoload.php';

use \Monolog\Logger as Logger;
use Monolog\Handler\StreamHandler;
$log =  new Logger('name');
$log->pushHandler(new StreamHandler('my.log', Logger::INFO));
// add records to the log
$log->addInfo('Info log');

위 코드를 json.php 파일에 저장하고 브라우저에서 실행한다. document_root 아래에 my.log 라는 파일이 생겨있고 내용이 있다는 것을 알 수 있을 것이다.


테스트로 설치한 라이브러리는 모노로그(monolog) 라고 하는 php 로깅 라이브러리이다. 개별 라이브러리의 사용법은 각자 다르므로 메뉴얼을 참고해서 사용하자.


라이브러리를 찾기 위해서는 https://packagist.org/ 에서 확인하면 된다.
예시로 설치한 monolog 의 경우 https://packagist.org/packages/monolog/monolog 에서 찾을 수 있다.

많은 라이브러리들이 github에서 관리되기 때문에 대부분의 관리되는 프로젝트의 경우 README.md 파일에 컴포저를 이용한 설치 방법이 적혀있을 것이다.