컴포저에 대해 알아봅시다.


안녕하세요.
고코더 입니다.


오늘은 컴포저라는 PHP 라이브러리에 대해 알아보려고 합니다. 라라벨을 사용하면 꼭 알아야하는 개념이고 요즘에 꼭 필요한 의존성 도구라서 다뤄봅니다.



컴포저라는 단어의 뜻?


단어 뜻이 참 익숙합니다. Composer라는 뜻은 작곡가와 작가를 말하는 단어입니다. 


그래서 그런지 공식 홈페이지 컴포저 사이트에 접속해보면 이렇게 마에스트로가 지휘 하는 모습이 나타납니다. 새로 고침할때마다 지휘자 머리색과 옷이 달라지는 센스를 확인 가능합니다. 



정체가 뭐야? 의존성 도구지


node.js에는 npm, 파이썬에는 pip, 루비에는 bundle이 있습니다. 이것들은 모두 의존성 도구 입니다. php에서도 대표적인 의존성 도구가 바로 이 composer입니다. 다른 언어와 마찮가지로 라이브러리를 선언해 현재 프로젝트에서 사용이 가능합니다. 

패지키지를 정의하고 의존하기위해  필요한 파일은 composer.json 라는 파일의 구조 예시입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
    "name":"gocoder",
    "description":"gocoder",
    "repositories":[
        {
            "type":"package",
            "package":{
                "name":"phpids/phpids",
                "version":"0.7",
                "dist":{
                    "url":"http://phpids.org/files/phpids-0.7.zip",
                    "type":"zip",
                    "reference":"0.7"
                }
            }
        }
}
cs


호환성 있는 설치환경


php 5.3.2에서 사용이 가능합니다. 그리고 윈도우, 리눅스, Mac OS등에서도 사용이 가능합니다. 호환성이 뛰어나기 때문에 어느 운영체제에서도 사용할 수 있는 특징이 있습니다.




의존성 도구가 필요할까?


프로젝트를 하던중에 업로드 컴포넌트를 사용하였는데 1.0 버전을 사용했습니다.그리고 3년후에 고도화 프로젝트를 시작하던 중에 해당 시스템이 어떤 프로그램으로 최적화 하여 사용했는지 알수가 없습니다. 왜냐면 현재 그 컴포너트는 9.0까지 나왔습니다. 기록이 남아있지 않아 결국 이것 저것 버전을 설치해보다가 오류를 발생시킵니다.

만약 컴포저와 같은 의존성 도구가 있다면 json에 해당 모듈과 버전을 기록하게 되고 이것을 다른 서버로 이전하거나 분석할때 명확하게 버전을 명시 해놓습니다. 그러므로 긴 시간이 지나도 의존성 도구로 관리되는 프로그램은 생명주기가 빠릅니다. 그리고 다른 서버로 이동 할때도 알아서 필요한 버전의 도구들을 알아서 설치해주므로 유지보수에서도 많이 유리 합니다. 


마무리


간단하게 무엇인지 알아봤습니다.


댓글을 달아 주세요