>  기사  >  운영 및 유지보수  >  Composer에 대한 자세한 소개

Composer에 대한 자세한 소개

PHP中文网
PHP中文网원래의
2017-10-23 10:50:532456검색

Composer는 매우 인기 있는 PHP 패키지 종속성 관리 도구로, PHP 개발자가 Composer를 익히는 데 필요합니다.

Composer는 간단한 명령으로 필요한 코드 패키지입니다.

핵심은 프로젝트에서 정의한 작곡가.json에 있으며, 이는 프로젝트가 의존해야 하는 패키지를 정의할 수 있습니다. 다중) 및 종속 패키지는 다른 패키지에 따라 달라질 수 있습니다(이것은 구성 요소의 이점입니다). Composer는 필요한 모든 것을 자동으로 다운로드합니다.

Composer는 사용자에게 매우 편리하지만 그 뒤에 숨겨진 개념은 여전히 ​​이해가 필요합니다. Github의 급속한 발전 덕분에 PHP 언어는 점점 더 현대화되고 있으며

더욱 높아졌습니다. Composer를 이해하려면 먼저 구조를 대략적으로 이해하세요.

Composer의 구조

Composer 명령줄 도구:
이 이해는 사용자 정의 Composer.json을 통해 필요한 코드를 다운로드하는 것만으로도 충분합니다. Composer를 간단하게 사용하고 마스터하세요. 몇 가지 특정 명령이면 충분합니다


코드 로더 자동 로딩:
Composer를 통해 개발자는 다양한 방식으로 사용할 수 있으며, 핵심은 PHP의 네임스페이스 개념과 PHP 개발에 있습니다. PSR-4 표준. Composer는 방금 이 두 가지를 기반으로 코드 자동 로더를 개발했습니다.


Github:
Github을 사용하면 PHP 개발자가 여기에 오픈 소스 코드를 호스팅할 수 있으며 Composer에서 시작된 Composer의 개발은 기본적으로 다운로드됩니다.


Packagist:
사용자의 경우 Composer의 명령줄 도구가 사용되는데, 명령줄 도구는 사용자가 사용할 수 있는 패키지 수를 어떻게 알 수 있습니까? Packagist, Packagist는 Composer의 주요 패키지 정보 저장소입니다. 패키지 개발자는 Github에서 특정 코드를 호스팅하고 패키지 정보를 Packagist에 제출하므로 사용자는 이를 Composer를 통해 사용할 수 있습니다.
Composer는 Packagist에 쿼리하기 위해 로컬로 정의된 작곡가 .json 정보를 기반으로 합니다. Composer.json/Package.json 정보를 구문 분석하고 최종적으로 github 저장소에 해당합니다. Composer가 최종적으로 코드를 다운로드하면 Github 저장소의 Composer.json에도 의존합니다. 여기에는 composer.json이 다른 의미가 있습니다.


Composer.json:
이것이 Composer의 핵심이며 Composer.json의 세 가지 유형도 위에 언급되어 있습니다. 구별할 때 주의해야 할 점은 처음 사용할 때 항상 헷갈리는 부분입니다.

Composer 명령줄 도구

composer init

사용자는 자신의 프로젝트 아래에 Composer.json을 생성하여 프로젝트의 종속성 패키지를 정의하거나 동일한 방식으로 작곡가 init을 통해 상호 작용할 수 있습니다.

composer install

은 가장 일반적으로 사용되는 명령이어야 합니다. Composer는 다운로드한 패키지를 로컬 작곡가.json 설치 패키지에 따라 프로젝트 아래의 공급업체 디렉터리에 넣고 동시에 패키지를 설치합니다.

실제로 설치 중에 작곡가.잠금 버전이 현재 공급업체 디렉터리의 코드 버전과 일치하는 것으로 확인되면 Composer는 아무 작업도 수행하지 않으며 작곡가.잠금의 목적은 다음과 같습니다.

composer update

그렇다면 최신 버전의 패키지를 얻을 수 있도록 어떻게 작곡가.lock을 업데이트할 수 있을까요? 이 명령으로 최신 버전을 업데이트하세요. 패키지

composer config

를 이해하는 것이 좋습니다. 전역 구성은 COMPOSER_HOME/config.json에 저장되고 비전역 구성 정보는 프로젝트 디렉터리

composer에 저장됩니다. config --list -gcomposer config - g inform-on-install falsecomposer global config bin-dir --absolute


composer create-project

이 명령은 일반적으로 사용되지 않지만 개인적으로 매우 중요하다고 생각합니다. 프로젝트의 모든 종속성 패키지를 다운로드하는 일반 설치 명령 이 프로젝트의 공급업체 디렉터리로 이동합니다. 이 명령은 모든 코드와 해당 종속 패키지를 하나의 디렉터리에 저장합니다. 이는 일반적으로 패키지 개발자가 git clone 명령을 실행하는 것과 동일합니다. Command.

composer global

를 수정하는 데 사용할 수 있습니다.

이것은 COMPOSER_HOME 디렉터리에서 설치 및 업데이트와 같은 Composer 명령을 실행할 수 있는 전역 설치 명령입니다. 물론 COMPOSER_HOME은 $PATH 환경에 있어야 합니다.

예를 들어, composer global require fabpot/을 실행합니다. php-cs-fixer, 이제 php-cs-fixer 명령줄을 전역적으로 실행할 수 있습니다. 나중에 업데이트하려면 Composer global update

composer dump-autoload

만 실행하면 됩니다. 업데이트하려면 작곡가 업데이트 명령을 실행해야 합니다. 때로는 이 명령을 사용하여 로더를 업데이트할 수 있습니다. 예를 들어, 로컬 사용자 정의 패키지(packagist가 아닌)를 참조하려는 경우 이 명령은

composer require

composer.json 파일을 수동 또는 대화형으로 생성하는 경우 이 명령을 사용하여 직접 패키지를 설치할 수 있습니다.

composer require cerdic/css-tidy:1.5.2composer require "ywdblog /phpcomposer:dev-master"

–prefer-source 및 –prefer-dist 매개변수

–prefer-dist: 안정적인 패키지의 경우 Composer 설치는 일반적으로 기본적으로 이 매개변수를 사용하므로 설치 속도도 높일 수 있습니다. 예를 들어 , 실제로 패키지를 설치하지 않고도 해당 패키지를 Github에서 직접 다운로드할 수 있습니다.

–prefer-source: 이 매개변수를 사용하면 패키지 설치 후 직접 설치됩니다. , 공급업체 디렉토리에는 .git 정보도 포함됩니다.

composer require "ywdblog/phpcomposer:dev-master" --prefer-source
# Vendor/ywdblog/phpcomposer 디렉토리에 .git 정보가 포함되어 있습니다.

추가 방법 Composer에 대한 프록시

중국에서는 Composer 다운로드가 특히 느립니다.

composer config repo.packagist 작곡가 "https://packagist.phpcomposer.com"

editcomposer.json

"저장소를 통해 속도를 높일 수 있습니다. ": { "packagist": { "type": "composer", "url": "https:// packagist.phpcomposer.com"
}
}

자동 로딩 코드 로더

composer 자체는 자동 로더를 통합하고 지원합니다. PSR-4, PSR-0, 클래스맵, 파일 자동 로드.

다음은 PSR-4 표준을 준수하는 Composer 참조 클래스맵, 파일, 로컬 코드를 사용하는 방법을 보여주는 예입니다.

Composer.json 편집

"autoload" : { "classmap": ["othsrc/","classsrc.php"], "files": ["othsrc /filesrc.php"], "psr-4": {"FooBar": "src"}
}

composer dump-autoload
위 작업을 통해 PSR-4의 경우 (FooBar 네임스페이스에서) PSR-4 오토로더를 등록하는 것과 같습니다

Composer의 오토로더를 사용하지 않으려면 직접 포함할 수 있습니다. Vendor/composer/autoload_*.php 파일을 편집하고 자신만의 로더를 구성하세요.
구체적인 예제는 github에 호스팅되어 있으니 참고하세요.

Repositories

Repositories에 대해서는 꼭 이해할 필요는 없지만 마스터하시면, Composer에 대해서는 중국어와 영어 문서에 잘 설명되어 있습니다.

기본 개념

패키지:

Composer는 일부 리소스 패키지와 패키지 설명을 설치합니다. 패키지 이름 및 해당 버전과 같은) 더 중요한 메타데이터 설명은 dist 및 소스입니다. dist는 리소스 패키지의 특정 버전에 대한 참조를 가리키는 소스입니다. 일반적으로 소스 코드 저장소(예: git)인 개발 중인 소스

리소스 라이브러리:

리소스 라이브러리는 패키지/버전 목록입니다. 프로젝트에 필요한 리소스 패키지를 찾기 위해 정의한 모든 저장소(이 문장은 매우 중요합니다)

Packagist.org는 기본적으로 Composer에 등록되었습니다(또는 Packagist.org가 Composer 리소스 라이브러리의 기본 창고 유형으로 이해됩니다). )

Composer 리소스 라이브러리 유형

Composer 리소스 라이브러리에는 4가지 유형이 포함되며, 기본값은 packagist.org에서 사용하는 리소스 유형인 작곡가 유형입니다.

단일을 사용합니다. packages.json 파일에는 모든 리소스 패키지 메타데이터가 포함되어 있습니다. pckagist.org에 패키지를 게시하면 시스템에서 기본적으로 packages.json을 생성하지만 내 패키지에 해당하는 파일을 찾지 못했습니다.

VCS 리소스 라이브러리 유형

프라이빗 컴포저 프라이빗을 구축하려는 경우 리소스 라이브러리 유형이면 이 유형을 사용할 수 있습니다. 예를 들어 프로젝트의 작곡가.json에 다음을 정의하면 Github에서 해당 코드를 사용할 수 있습니다.

{ "repositories": [ { "유형": "vcs", "url": "https://github.com/ywdblog/phpcomposer" } ], "require": { "ywdblog/phpcomposer": "dev-master" } }

composer update 실행 시 실제로 Comoser는 pckagist.org가 아닌 Github에서 패키지를 다운로드합니다.

또한 Package 리소스 라이브러리 유형이나 PEAR 리소스 라이브러리 유형을 사용해야 하는 경우 일반적으로 공식 문서를 참조하세요. , 그냥 작곡가.json에 이름과 버전 속성을 정의하세요.

Composer.json

Composer.json은 이 기사에서 여러 번 언급되었습니다. 예를 들어 타사 패키지를 사용하려면 Composer가 타사 패키지를 설치한 후 작곡가.json도 로컬로 정의해야 합니다. 그러면 둘 다 작곡가.json이라고 하는데, 이를 이해하는 것이 매우 중요합니다.

프로젝트 아래에 작곡가.json을 정의하면 이 패키지를 ROOT 패키지라고 합니다. 이 Composer.json은 프로젝트에 필요한 조건을 정의합니다(예: 프로젝트가 타사 패키지에 따라 달라질 수 있음).

composer.json의 일부 속성은 ROOT 패키지에서만 사용할 수 있습니다. config 속성은 ROOT 패키지에만 적용됩니다.

리소스 패키지는 ROOT입니까? 예를 들어 git clone ywdblog/phpcomposer를 실행하는 경우 로컬 phpcomposer 디렉터리는 ywdblog 패키지입니다. /phpcomposer를 로컬 phpcomposer 디렉토리에 추가하면 프로젝트 phpcomposer는 ROOT 패키지입니다.

이 웹사이트를 참조하면 성숙한 프레임워크인 Laravel의 Composer.json 정의는 매우 고전적입니다. 패키지 버전 정보

사용자가 작곡가.json을 로컬로 구성할 때 특정 버전의 패키지가 필요한 경우 Composer는 Github 저장소의 태그 또는 분기에서 패키지 다운로드를 지원합니다. Github의 경우 Packagist X.Y.Z, vX.Y.Z, X.Y.Z 패키지 유형을 준수하는 해당 패키지 버전을 생성합니다. 즉, Github에는 패키지의 특정 버전이 하나만 있지만 Composer는 다음과 같은 여러 형태의 참조 방법을 지원합니다. as:

composer에는 monolog/monolog 1.0.0-RC1이 필요합니다.

composer에는 monolog/monolog v1.0.0-RC1이 필요합니다.

composer에는 monolog/monolog 1.0이 필요합니다.*

composer에는 monolog/monolog ~1.10이 필요합니다.



Github의 브랜치의 경우, Packagist는 해당 패키지의 버전을 생성합니다. 브랜치 이름이 버전과 유사하면 {브랜치 이름}이 생성됩니다. 브랜치 이름이 버전 번호와 같지 않으면 dev의 패키지 버전 번호가 생성됩니다. dev-{분기 이름} 형식의 버전 번호

composer require monolog/monolog master-dev

composer require monolog/monolog master.x -dev

요약:

Composer를 이해하려면 가장 중요한 것은 연습입니다. . 마지막으로 PSR-4 및 네임스페이스를 이해할 수도 있습니다. pckagist.org에 게시해 보세요.

위 내용은 Composer에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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