컴포저 (소프트웨어)
1. 개요
컴포저는 PHP용 의존성 관리 도구이다. composer.json 파일을 사용하여 프로젝트에서 사용하는 라이브러리와 버전을 관리하며, PSR-4 자동 로딩 표준을 지원한다. 주요 명령어로는 require, install, update, remove 등이 있으며, 다양한 버전 지정 방식을 통해 라이브러리 버전을 유연하게 관리할 수 있다. 심포니, 라라벨, 코드이그나이터 등 여러 PHP 프레임워크에서 널리 사용된다.
이미지 준비중입니다.
| 개발자 | 닐스 아데르만, 조르디 보지아노 |
|---|---|
| 출시일 | 2012년 3월 1일 |
| 최신 안정화 버전 | 2.6.6 |
| 최신 안정화 버전 출시일 | 2023년 12월 9일 |
| 상태 | 활발 |
| 운영 체제 | 크로스 플랫폼 |
| 프로그래밍 언어 | PHP |
| 장르 | 패키지 관리자 |
| 라이선스 | MIT 허가서 |
| 웹사이트 | Composer 공식 웹사이트 |
-
자유 패키지 관리 시스템 -
F-Droid
F-Droid는 2010년 키어런 걸트니엑스가 설립한 안드로이드용 자유 소프트웨어 앱 저장소로, 구글 플레이 스토어에 없는 자유/오픈 소스 소프트웨어 앱을 제공하며 감시, 검열 저항, 개인 정보 보호에 중점을 둔 클라이언트 앱, 저장소 관리 도구, 웹사이트 생성기 등의 하위 프로젝트로 구성된다. -
자유 패키지 관리 시스템 -
어드밴스트 패키징 툴
어드밴스트 패키징 툴(APT)은 데비안 계열 리눅스 배포판에서 패키지를 관리하는 도구 모음으로, 패키지 설치, 삭제, 업데이트, 업그레이드 기능을 제공하며, 특히 패키지 간 의존성을 자동 관리하는 특징을 가진다. -
PHP 소프트웨어 -
핵 (프로그래밍 언어)
Hack은 페이스북에서 개발한 프로그래밍 언어이며, PHP와 상호 운용되도록 설계되었고, 정적 타이핑을 도입하여 타입 힌트를 확장하며 PHP 7에도 영향을 미쳤다. -
PHP 소프트웨어 -
HHVM
HHVM은 페이스북에서 개발한 PHP 및 Hack 언어 실행 엔진으로, JIT 컴파일을 통해 높은 성능을 제공하며 웹 개발 분야에 새로운 가능성을 제시했다. -
공식 웹사이트에 알 수 없는 변수를 사용한 문서 -
브루클린 미술관
브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다. -
공식 웹사이트에 알 수 없는 변수를 사용한 문서 -
광주지방기상청
광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
2. 문법
컴포저는 `composer.json` 파일을 기반으로 작동하며, 이 파일에는 프로젝트에서 사용하는 라이브러리 목록과 버전 정보 등이 JSON 형식으로 저장된다.
`composer require monolog/monolog` 명령어를 실행하면 아래와 같은 `composer.json` 파일이 생성된다.
```javascript
{
"require": {
"monolog/monolog": "1.2.*"
}
}
```
PHP-FIG가 제공하는 코딩 규약 "PSR-4"에 준하는 자동 로딩을 위한 `composer.json` 파일은 아래와 같다. `MyApp` 네임스페이스를 사용하여 코딩해야 한다.
```json
{
"autoload" : {
"psr-4" : {
"MyApp\\" : "folder/"
}
}
}
```
샘플 코드는 다음과 같다.
```php
namespace MyApp;
class ClassName
{
..
}
2.1. 명령어
컴포저는 라이브러리 관리를 효율적으로 수행하기 위해 다음과 같은 여러 명령어들을 제공한다.
* `require`: composer.json 파일에 라이브러리를 추가하고 설치한다.
* `install`: composer.json 파일에 명시된 모든 라이브러리를 설치한다. PHP 저장소 의존성을 다운로드할 때 사용한다.
* `update`: composer.json 파일에 명시된 모든 라이브러리를 허용된 버전에 따라 업데이트한다.
* `remove`: 라이브러리를 제거하고 composer.json 파일에서 해당 라이브러리 관련 내용을 삭제한다.
다음은 `composer require monolog/monolog` 명령으로 생성된 composer.json 파일의 예시이다.
```javascript
{
"require": {
"monolog/monolog": "1.2.*"
}
}
2.2. 라이브러리 버전 관리
컴포저는 라이브러리의 버전을 유연하게 관리할 수 있도록 다양한 버전 지정 방식을 제공한다.
| 기호 | 역할 (버전 번호 앞에 위치) | 예시 |
|---|---|---|
| >= | 숫자를 확장할 수 있다. 또한 >, <, <=를 사용할 수 있다. | "php": ">=5.5.9"는 PHP 7을 포함한다. |
| != | 버전을 제외한다. | |
| - | 버전 범위를 정의한다. | |
| * | 모든 하위 버전까지 확장한다. | "symfony/symfony": "3.1.*"는 3.1.1을 포함한다. |
| ~ | 동일 레벨의 다음 버전까지 확장한다. | "doctrine/orm": "~2.5"는 2.6도 포함하지만 2.4 또는 3.0은 포함하지 않는다. |
| ^ | 하위 호환성이 있는 경우에만 물결표와 동일하다. |
3. 지원되는 프레임워크
컴포저는 다양한 PHP 프레임워크에서 널리 사용되고 있다.
4. composer.json 예시
`composer.json` 파일은 프로젝트의 의존성을 정의하고, 클래스 자동 로딩(autoloader) 설정을 포함할 수 있다. 다음은 PSR-4 표준에 따라 `MyApp` 네임스페이스를 사용하는 예시이다.
```json
{
"autoload" : {
"psr-4" : {
"MyApp\\" : "folder/"
}
}
}
```
다음은 샘플 코드이다.
```php
namespace MyApp;
class ClassName
{
..
}