>백엔드 개발 >PHP 튜토리얼 >Composer가 PHP에서 작동하고 종속성 관리를 지원하는 방식

Composer가 PHP에서 작동하고 종속성 관리를 지원하는 방식

Barbara Streisand
Barbara Streisand원래의
2024-12-31 13:22:14479검색

How Composer Works in PHP and Aids in Dependency Management

Composer가 PHP에서 작동하고 종속성 관리를 지원하는 방식

Composer는 PHP를 위한 강력한 종속성 관리 도구이며 개발자가 라이브러리, 종속성 및 자동 로딩을 관리하는 데 도움을 줌으로써 최신 PHP 개발에서 중요한 역할을 합니다. 이는 타사 라이브러리 처리 프로세스를 단순화하여 올바른 버전이 설치되고 해당 종속성이 자동으로 해결되도록 합니다. Composer는 오늘날 소규모 애플리케이션부터 대규모 프레임워크에 이르기까지 거의 모든 PHP 프로젝트에서 필수적인 도구가 되었습니다.

이 기사에서는 Composer의 작동 방식, 왜 중요한지, PHP 프로젝트의 종속성 관리에 어떻게 도움이 되는지 설명합니다.


1. 컴포저란 무엇인가요?

Composer는 PHP 프로젝트의 종속성을 관리하는 도구입니다. 이를 통해 프로젝트에 필요한 라이브러리를 선언한 다음 해당 라이브러리의 설치 및 업데이트를 자동으로 처리할 수 있습니다. npm(JavaScript용)과 같은 다른 패키지 관리자와 달리 Composer는 PHP 라이브러리 및 종속성 관리에만 중점을 둡니다. npm이나 pip와 같은 범용 패키지 관리자가 아닙니다. 오히려 PHP에만 해당됩니다.

Composer는 다음과 같은 몇 가지 주요 기능을 제공합니다.

  • 종속성 관리: 라이브러리의 설치, 버전 관리, 업데이트를 처리합니다.
  • 자동 로딩: 프로젝트에 사용되는 클래스에 대한 자동 로딩 파일을 자동으로 생성합니다.
  • 패키지 저장소: Packagist라고 알려진 대규모 PHP 패키지 저장소에 액세스합니다.

2. 컴포저의 주요 기능

아. 의존성 관리

Composer를 사용하면 개발자는 자신의 프로젝트가 의존하는 외부 라이브러리나 패키지를 관리할 수 있습니다. 이는 일반적인 작업(예: 로깅, 데이터베이스 액세스 또는 양식 유효성 검사)을 위한 타사 라이브러리가 널리 사용되는 현대 소프트웨어 개발에 매우 ​​중요합니다.

  • 버전 관리: Composer는 버전 충돌을 처리하여 종속 항목이 호환되는 버전과 함께 설치되도록 합니다.
  • 전이적 종속성: 패키지를 설치할 때 Composer는 자체 종속성(전이적 종속성이라고 함)을 자동으로 해결합니다. 이렇게 하면 패키지에 필요한 모든 라이브러리도 설치되므로 각 패키지의 요구 사항을 수동으로 확인할 필요가 없습니다.

ㄴ. 패키지 저장소(Packagist)

Composer는 기본 PHP 패키지 저장소인 Packagist를 사용하여 라이브러리를 가져옵니다. Packagist는 소규모 유틸리티 라이브러리부터 Laravel 또는 Symfony와 같은 대규모 프레임워크에 이르기까지 수천 개의 PHP 패키지를 호스팅합니다. Packagist 또는 사용자 정의 저장소에서 직접 패키지를 설치할 수 있습니다.

  • 패키지 설치: Packagest에서 패키지를 설치하려면 작곡가 요구 사항을 사용하세요.
  • 사용자 정의 저장소: 작곡가.json 파일에 다른 저장소(예: GitHub, GitLab 또는 개인 저장소)를 지정할 수 있습니다.

ㄷ. 자동 로딩

Composer는 설치된 종속성의 네임스페이스와 클래스를 기반으로 프로젝트에 대한 자동 로더를 자동으로 생성합니다. 즉, Composer를 사용할 때 클래스 파일을 수동으로 포함하거나 요구할 필요가 없습니다.

  • PSR-4 및 PSR-0 자동 로딩: Composer는 클래스에 대한 PSR-4(권장) 및 PSR-0 자동 로딩 표준을 지원하여 PHP 프로젝트 전반에 걸쳐 일관성을 보장합니다.
  • 클래스 맵: PSR 규칙을 따르지 않는 클래스의 경우 Composer는 클래스 맵도 지원합니다.

디. 버전 제약

Composer를 사용하면 각 종속성에 대한 버전 제약 조건을 지정할 수 있습니다. 프로젝트에 필요한 패키지의 최소 버전 또는 정확한 버전을 정의할 수 있습니다. Composer는 종속성을 관리할 때 유연성을 제공하기 위해 다양한 버전 관리 체계를 지원합니다.

  • 정확한 버전: 패키지의 정확한 버전을 지정할 수 있습니다("공급업체/패키지": "1.2.3").
  • 버전 범위: Composer를 사용하면 >=, <, ^ 또는 ~와 같은 연산자를 사용하여 호환되는 버전과 일치하는 버전 범위를 정의할 수 있습니다.

3. Composer 작동 방식

Composer는 프로젝트의 종속성 및 기타 구성 설정을 정의하는 작곡가.json이라는 특수 파일을 읽어 작동합니다. 워크플로에는 일반적으로 다음 단계가 포함됩니다.

1단계: 작곡가.json 파일

composer.json 파일은 Composer 기능의 핵심입니다. 여기에는 다음을 포함하여 프로젝트에 대한 메타데이터가 포함됩니다.

  • 프로젝트 이름 및 설명: 프로젝트 기본 정보
  • 종속성: 버전 제약 조건과 함께 필수 패키지 목록입니다.
  • 자동 로딩 구성: Composer가 클래스를 자동 로딩하는 방법에 대한 정의

기본 작곡가.json 파일의 예:

{
  "name": "myproject/example",
  "description": "A simple PHP project",
  "require": {
    "monolog/monolog": "^2.0",
    "guzzlehttp/guzzle": "^7.0"
  }
}

이 예에서 프로젝트에 필요한 사항은 다음과 같습니다.

  • monolog/monolog (로깅 라이브러리) 버전 2.0 이상.
  • guzzlehttp/guzzle(HTTP 클라이언트) 버전 7.0 이상.

2단계: 종속성 설치

composer.json 파일이 정의되면 작곡가 설치를 실행하면 다음이 수행됩니다.

  1. 종속성 해결: Composer는 필요한 종속성을 다운로드하여 서로 호환되는지 확인합니다.
  2. composer.lock 생성: Composer는 설치된 각 종속성의 정확한 버전을 기록하는 작곡가.lock 파일을 생성합니다. 이렇게 하면 프로젝트에 참여하는 모든 사람이 동일한 버전을 설치하여 "종속성 지옥"을 방지할 수 있습니다.
  3. 라이브러리 설치: Composer는 모든 종속성을 설치하고 이를 Vendor/ 디렉터리에 저장합니다.

3단계: 자동 로딩

Composer는 Vendor/autoload.php 파일에 자동으로 오토로더를 생성합니다. 이 파일을 프로젝트에 포함시켜 설치된 라이브러리의 모든 클래스를 자동 로드할 수 있습니다.

예:

require 'vendor/autoload.php';

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// Create a logger
$log = new Logger('name');
$log->pushHandler(new StreamHandler('app.log', Logger::WARNING));
$log->warning('This is a warning!');




이 예에서 Composer는 MonologLogger 및 MonologHandlerStreamHandler 클래스를 자동 로드합니다.


4. 주요 작성기 명령

Composer에는 종속성 관리를 더 쉽게 해주는 몇 가지 유용한 명령이 제공됩니다.

  • composer install: 작곡가.json 파일에 나열된 모든 종속성을 설치합니다.
  • composer require : 프로젝트에 새 패키지를 추가하고 작곡가.json 및 작곡가.lock 파일을 업데이트합니다.
  • Composer 업데이트: Composer.json의 버전 제약 조건에 따라 모든 종속성을 최신 버전으로 업데이트합니다.
  • 컴포저 제거 <패키지>: 프로젝트에서 패키지를 제거합니다.
  • 컴포저 쇼: 설치된 모든 패키지와 해당 버전을 나열합니다.
  • composer dump-autoload: 오토로더를 재생성합니다.

5. 작성자 및 버전 제약

Composer에서는 연산자를 사용하여 유연한 버전 제약 조건을 정의할 수 있습니다.

  • ^: 호환되는 버전(예: ^1.2는 1.2.0 이상, 2.0.0 미만을 의미).
  • ~: 패치 버전 업데이트를 허용합니다(예: ~1.2.3은 1.2.x이지만 1.3.0 미만을 의미함).
  • >=, <=, <, >: 명시적인 범위 제약.

이러한 제약 조건은 시간이 지남에 따라 업데이트되더라도 프로젝트에서 호환 가능한 버전의 라이브러리를 사용하도록 보장하는 데 도움이 됩니다.


6. Composer 사용의 이점

  • 중앙 집중식 종속성 관리: Composer는 모든 종속성을 한 곳에서 처리하므로 외부 라이브러리를 쉽게 관리할 수 있습니다.
  • 버전 제어: Composer는 다른 개발자나 서버가 관련된 경우에도 항상 올바른 버전의 라이브러리를 보유하도록 보장합니다.
  • 간편한 업데이트: 작곡가 업데이트를 사용하면 버전 제약 조건을 준수하면서 모든 라이브러리를 쉽게 최신 상태로 유지할 수 있습니다.
  • 자동 로딩: Composer는 강력하고 표준화된 자동 로더를 생성하므로 클래스 파일을 수동으로 포함할 필요가 없습니다.
  • 협업: Composer.lock 파일을 통해 Composer는 전체 팀이 동일한 종속성 세트를 사용하고 있는지 확인합니다.

7. 결론

Composer는 PHP 개발자를 위한 필수 도구로, 프로젝트 종속성을 효율적으로 관리하고 자동 로딩을 처리하며 프로젝트에서 호환되는 라이브러리 버전을 사용하도록 도와줍니다. 소규모 프로젝트에서 작업하든 대규모 애플리케이션에서 작업하든 Composer는 타사 패키지 처리 프로세스를 단순화하고 코드베이스를 체계적으로 유지합니다. Composer를 사용하면 종속성이 자동으로 처리된다는 확신을 갖고 애플리케이션 구축에 집중할 수 있습니다.


위 내용은 Composer가 PHP에서 작동하고 종속성 관리를 지원하는 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.