컴포저 (소프트웨어)
"오늘의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 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
개발자 | 닐스 아데르만, 조르디 보지아노 |
출시일 | 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은 포함하지 않는다. |
^ | 하위 호환성이 있는 경우에만 물결표와 동일하다. |
컴포저는 다양한 PHP 프레임워크에서 널리 사용되고 있다.
`composer.json` 파일은 프로젝트의 의존성을 정의하고, 클래스 자동 로딩(autoloader) 설정을 포함할 수 있다. 다음은 PSR-4 표준에 따라 `MyApp` 네임스페이스를 사용하는 예시이다.
[1]
웹사이트
Software release
https://github.com/c[...]
2016-04-24
3. 지원되는 프레임워크
프레임워크 지원 버전 심포니 2 이상 라라벨 4 이상 코드이그나이터 3.0 이상 CakePHP 3.0 이상 FuelPHP 2.0 이상 드루팔 8 이상 TYPO3 6.2 이상 SilverStripe 3.0 이상 마젠토 2.0 이상 Yii 1.1 이상 젠드 프레임워크 1 이상 Silex 해당사항 없음 Lumen 해당사항 없음 네오스 플로우 2.0 이상 오픈메이지 20.0.0 이상 라미나스 해당사항 없음 Adianti 프레임워크 1 이상
4. composer.json 예시
```json
{
"autoload" : {
"psr-4" : {
"MyApp\\" : "folder/"
}
}
}
```
다음은 샘플 코드이다.
```php
namespace MyApp;
class ClassName
{
..
}
참조
[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