Composer – PHP 의존성 관리도구

요즘 여기저기서 의존성 관리 도구같은 것들이 상당히 많은 것들이 나오고 있다는 건 알았지만… PHP도 의존성 관리 도구로 관리해서 배포하고 하는구나란 걸 이제서야 알았다. 이런 거 따라가는 걸 제대로 못해서 큰일이다…ㅠㅠ

뭐, 자료야 워낙 널리 알려져 있으니 내가 잊어버리지 않을 정도로만 정리해야겠다.

Composer는 PHP를 위한 의존성 관리 도구이다. 의존성 관리 도구들은 해당 프로젝트에서 요구하는 의존적인 라이브러리들을 프로젝트에 설치해서 사용할 수 있도록 도와주는 도구들이다. IDE들이야 당연히 가지고 있고, 파이썬이랑 루비에서도 많이 이용되고 있어서 여기저기에 많이 쓰인다는 건 알았지만 PHP에도 이용되고 있을 줄이야….

헷갈리면 안되는 것이 Composer는 패키지 관리 도구가 아니다. (ㅇㅅㅇ!)

각 프로젝트 단위로 패키지나 라이브러리를 다루게 하면 그런 역할을 할 수 있기는 한데 패키지나 라이브러리는 대게 프로젝트 단위로 설치가 된다. (그 단위가 주로 vender로 되어 있는 것 같다.) 그리고 기본적으로 composer는 절대로 전역적으로 사용하도록 설치하지 않는다. (이 부분 중요함) 그러므로 의존성 관리도구라고 한다.

난 대충 이정도면 설명이 되는데… 잘 모르겠다 하시는 분들은 NuGet을 떠올리면 대충 알 거라고 생각된다. ㅇㅅㅇ 근데 난 이녀석이 좀 더 친숙해서 잘 비교가 되는 편이지만 어떨지…

*추가: nodejs를 안다면 npm을, 루비를 안다면 bundler를 떠올리면 좋을 거 같다. 단, 이런 개념에 대해 알면 좀 더 접근하기 쉬울 뿐, 사실 이런 도구는 PHP에 적합하진 않은 편이다. 저 툴들을 제대로 안다면 이유를 금방 찾을 수 있을 것이다.

composer를 통해서 향상된 점이 있다면 이런 점들일 것이다.

  • 프로젝트가 여러 개의 라이브러리에 의존적이다
  • 몇몇 라이브러리가 다른 라이브러리에 의존성이 있다
  • 어떤 의존성이 있는지 선언할 수 있다
  • 설치할 필요가 있는 패키기 버전을 찾아 설치한다

의존성 선언을 위해서는 주로 composer.json을 이용하여 하는 듯 하다.

php 5.3.2 이상을 요구한다. 몇몇 php 세팅과 컴파일 플래스를 필수적으로 요구한다고 하는데 이건 설치할때 보면 나올 것이다. ㅇㅅㅇ

게다가 프로젝트나 패키지의 버전 관리에 따라서 git이나 svn, hg를 쓴다고 하니 뭐 이런 것 쯤이야 모르는 사람… 없겠지. ㅡㅅㅡ (학부생들 수업시간에 잠깐 들어가서 설명하니깐 애들 죽을라 하던데..ㅡㅅㅡ)

…좋은 거 알았다. ㅠㅠ