맨위로가기

컴포저 (소프트웨어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

컴포저는 PHP용 의존성 관리 도구이다. composer.json 파일을 사용하여 프로젝트에서 사용하는 라이브러리와 버전을 관리하며, PSR-4 자동 로딩 표준을 지원한다. 주요 명령어로는 require, install, update, remove 등이 있으며, 다양한 버전 지정 방식을 통해 라이브러리 버전을 유연하게 관리할 수 있다. 심포니, 라라벨, 코드이그나이터 등 여러 PHP 프레임워크에서 널리 사용된다.

더 읽어볼만한 페이지

  • PHP 소프트웨어 - 핵 (프로그래밍 언어)
    Hack은 페이스북에서 개발한 프로그래밍 언어이며, PHP와 상호 운용되도록 설계되었고, 정적 타이핑을 도입하여 타입 힌트를 확장하며 PHP 7에도 영향을 미쳤다.
  • PHP 소프트웨어 - HHVM
    HHVM은 페이스북에서 개발한 PHP 및 Hack 언어 실행 엔진으로, JIT 컴파일을 통해 높은 성능을 제공하며 웹 개발 분야에 새로운 가능성을 제시했다.
  • 자유 패키지 관리 시스템 - F-Droid
    F-Droid는 2010년 키어런 걸트니엑스가 설립한 안드로이드용 자유 소프트웨어 앱 저장소로, 구글 플레이 스토어에 없는 자유/오픈 소스 소프트웨어 앱을 제공하며 감시, 검열 저항, 개인 정보 보호에 중점을 둔 클라이언트 앱, 저장소 관리 도구, 웹사이트 생성기 등의 하위 프로젝트로 구성된다.
  • 자유 패키지 관리 시스템 - 어드밴스트 패키징 툴
    어드밴스트 패키징 툴(APT)은 데비안 계열 리눅스 배포판에서 패키지를 관리하는 도구 모음으로, 패키지 설치, 삭제, 업데이트, 업그레이드 기능을 제공하며, 특히 패키지 간 의존성을 자동 관리하는 특징을 가진다.
  • PHP로 작성된 자유 소프트웨어 - 드루팔
    드루팔은 드리스 바이테르트가 개발하여 2001년 공개된 PHP 기반의 오픈 소스 콘텐츠 관리 시스템으로, 모듈과 테마를 통해 기능 확장이 가능하며 다양한 기관에서 활용되고 활발한 커뮤니티를 가지고 있다.
  • PHP로 작성된 자유 소프트웨어 - 워드프레스
    워드프레스는 PHP로 작성된 자유-오픈 소스 콘텐츠 관리 시스템으로, 테마와 플러그인을 통해 디자인 변경 및 기능 확장이 용이하며, 다양한 웹사이트 구축 및 관리를 지원하는 설치형/가입형 플랫폼이다.
컴포저 (소프트웨어) - [IT 관련 정보]에 관한 문서
기본 정보
Composer 로고
Composer 로고
개발자닐스 아데르만, 조르디 보지아노
출시일2012년 3월 1일
최신 안정화 버전2.6.6
최신 안정화 버전 출시일2023년 12월 9일
상태활발
운영 체제크로스 플랫폼
프로그래밍 언어PHP
장르패키지 관리자
라이선스MIT 허가서
웹사이트Composer 공식 웹사이트

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. 명령어

컴포저는 라이브러리 관리를 효율적으로 수행하기 위해 다음과 같은 여러 명령어들을 제공한다.[16][5]

  • `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. 라이브러리 버전 관리

컴포저는 라이브러리의 버전을 유연하게 관리할 수 있도록 다양한 버전 지정 방식을 제공한다.[6]

기호역할 (버전 번호 앞에 위치)예시
>=숫자를 확장할 수 있다. 또한 >, <, <=를 사용할 수 있다."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 프레임워크에서 널리 사용되고 있다.

프레임워크지원 버전
심포니2 이상
라라벨4 이상
코드이그나이터3.0 이상
CakePHP3.0 이상
FuelPHP2.0 이상
드루팔8 이상
TYPO36.2 이상
SilverStripe3.0 이상
마젠토2.0 이상
Yii1.1 이상
젠드 프레임워크1 이상
Silex해당사항 없음
Lumen해당사항 없음
네오스 플로우2.0 이상
오픈메이지20.0.0 이상
라미나스해당사항 없음
Adianti 프레임워크1 이상


4. composer.json 예시

`composer.json` 파일은 프로젝트의 의존성을 정의하고, 클래스 자동 로딩(autoloader) 설정을 포함할 수 있다. 다음은 PSR-4 표준에 따라 `MyApp` 네임스페이스를 사용하는 예시이다.

```json

{

"autoload" : {

"psr-4" : {

"MyApp\\" : "folder/"

}

}

}

```

다음은 샘플 코드이다.

```php


namespace MyApp;

class ClassName

{

..

}

참조

[1] 웹사이트 Software release https://github.com/c[...] 2016-04-24
[2] 웹사이트 Getting Started/Dependency management https://getcomposer.[...] 2013-11-28
[3] 웹사이트 composer/composer https://github.com/c[...] 2020-06-23
[4] 웹사이트 packagist.org https://packagist.or[...]
[5] 웹사이트 Command-line interface / Commands https://getcomposer.[...]
[6] 웹사이트 Versions and constraints - Composer https://getcomposer.[...]
[7] 웹사이트 Release · composer/composer · GitHub https://github.com/c[...] 2024-01-03
[8] 웹사이트 Software CHANGELOG https://raw.github.c[...] 2013-11-28
[9] 웹사이트 Getting Started/Dependency management https://getcomposer.[...] 2013-11-28
[10] 웹사이트 packagist.org https://packagist.or[...]
[11] 웹사이트 History of Laravel PHP framework, Eloquence emerging http://maxoffsky.com[...] 2013-07-27
[12] 웹사이트 Software release https://github.com/c[...] 2016-04-24
[13] 웹사이트 Getting Started/Dependency management https://getcomposer.[...] 2013-11-28
[14] 웹사이트 Composer acknowledgements https://github.com/c[...]
[15] 웹사이트 packagist.org https://packagist.or[...]
[16] 웹인용 Command-line interface / Commands https://getcomposer.[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com