Composer는 PHP의 표준 의존성 관리자입니다 — 서드파티 패키지(라이브러리, 프레임워크)를 설치하고 관리하며, 수동 require 문 없이 클래스가 자동으로 로드되도록 오토로딩을 제공합니다. 모든 현대 PHP 개발의 중심입니다.
의존성 관리
composer require guzzlehttp/guzzle
composer install
composer update
// composer.json — 프로젝트의 의존성을 선언
{
"require": {
"guzzlehttp/guzzle": "^7.0", // 패키지 + 버전 제약
"monolog/monolog": "^3.0"
},
"autoload": {
"psr-4": { "App\\": "src/" } // App\ namespace를 src/ 폴더에 매핑
}
}
composer.json은 의존성(버전 제약과 함께)과 오토로드 설정을 선언합니다. composer.lock 파일은 정확한 버전을 고정합니다(팀과 프로덕션 전반에서 재현 가능한 설치를 위해 커밋 — 다른 락파일처럼).
<?php
require "vendor/autoload.php"; // 오토로더를 한 번 포함 (모든 것을 부트스트랩)
$user = new App\Models\User(); // App\Models\User가 src/Models/User.php에서 자동 로드됨
$client = new GuzzleHttp\Client(); // 패키지 클래스도 자동으로 로드됨
// 각 클래스마다 수동 require 불필요!
require "vendor/autoload.php" 한 줄이면, Composer의 오토로더가 클래스가 처음 사용될 때 필요할 때 로드합니다 — 클래스의 namespace를 파일 경로에 매핑(PSR-4)하여 자동으로 포함합니다. 이는 모든 클래스 파일을 수동으로 require하던 옛 방식을 대체합니다.
namespace 접두사 "App\" → 디렉터리 "src/"
클래스 App\Models\User → 파일 src/Models/User.php
클래스 App\Services\Mailer → 파일 src/Services/Mailer.php
→ 오토로더가 클래스 이름을 경로로 해석하여 포함. 클래스별 설정 불필요.
composer dump-autoload -o # 프로덕션을 위한 최적화된 classmap 생성 (더 빠름)
Composer는 현대 PHP의 근간입니다 — 사실상 모든 PHP 프로젝트가 의존성을 관리하고 클래스를 로드하는 방식이므로, 이를 이해하는 것은 모든 현대적 PHP 개발에 필수적입니다.
두 역할이 모두 결정적입니다. 의존성 관리자로서, 실제 애플리케이션이 의존하는 서드파티 패키지와 프레임워크(Laravel, Symfony, Guzzle 등)를 설치하고 버전 관리하며, composer.json이 의존성을 선언하고 composer.lock이 재현 가능한 설치를 보장합니다(다른 락파일처럼 커밋하여 팀과 프로덕션 전반에서 일관된 버전).
오토로더로서, 모든 클래스 파일을 수동으로 require하던 옛날의 오류 나기 쉬운 관행을 제거합니다 — 대신 require "vendor/autoload.php" 한 줄이면 PSR-4(namespace를 디렉터리에 매핑)를 통해 클래스가 필요할 때 자동으로 로드됩니다.
이 오토로딩은 namespace와 결합하여 현대 PHP 프로젝트 구조의 토대입니다.
Composer 없이는 어떤 현대 PHP 프레임워크나 패키지도 사용할 수 없으며, 오토로딩이 모든 현대 PHP 코드가 조직되고 로드되는 방식이므로, Composer(의존성 관리, 락파일, PSR-4 오토로딩, vendor/autoload.php 부트스트랩)를 이해하는 것은 전문적인 PHP 개발에 없어서는 안 될 일상 지식입니다 — Node.js에서 npm이 차지하는 만큼 PHP에서 핵심적입니다.