라이브러리 관리
프로젝트에서 필요한 패키지(예: 라라벨, 심포니, Guzzle HTTP 클라이언트 등)를 쉽게 설치할 수 있습니다.
버전 관리
특정 버전의 패키지를 명시하거나, 버전 범위를 지정해서 업데이트 시 안정성을 유지할 수 있습니다.
자동 로딩(Autoloading)
설치된 라이브러리의 클래스를 require 'vendor/autoload.php' 한 줄로 자동 불러올 수 있습니다. PSR-4 방식의 네임스페이스 오토로딩도 지원합니다.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
getcomposer.org에서 Windows Installer를 다운로드 후 실행하면 PATH에 자동 등록됩니다.
설치 확인:
composer -V
composer init
composer.json 파일이 생성되며, 프로젝트 이름, 라이선스, 의존성 등을 설정합니다.
composer require guzzlehttp/guzzle
→ vendor/ 디렉토리에 패키지가 설치되고, composer.json 및 composer.lock 파일이 업데이트됩니다.
composer install
→ composer.lock을 기준으로 의존성을 설치합니다. (프로젝트를 새로 클론했을 때 사용)
composer update
→ composer.json에 맞춰 최신 버전으로 업데이트합니다.
composer.json
프로젝트의 의존성, PHP 버전 요구 사항, 오토로딩 규칙 등을 정의하는 파일.
예시:
{
"require": {
"monolog/monolog": "^3.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
composer.lock
실제 설치된 패키지의 버전이 기록되는 파일. 팀 프로젝트에서는 이 파일을 Git에 커밋해두어 동일한 환경을 보장합니다.
vendor/
모든 외부 라이브러리가 설치되는 디렉토리.
<?php
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$log = new Logger('app');
$log->pushHandler(new StreamHandler('app.log', Logger::WARNING));
$log->warning('경고 메시지');
$log->error('에러 메시지');
라이브러리 설치 및 관리 자동화
버전 충돌 최소화
오토로딩 지원으로 코드 간결화
PHP 생태계의 풍부한 패키지(Packagist와 연동) 활용 가능