컴포저
composer 는 php 를 개발하는데 있어서 패키지간의 의존성을 관리하는 의존성 관리자입니다.
node.js 의 npm, ruby의 bundle과 같은 역할을 수행합니다.
- 사용 이점
- 컴포넌트 관리 자동화
- 개발/운영 동일한 의존성을 사용, 버전 불일치 등의 문제 발생을 피할 수 있다.
- 오토로드 지원
- 컴포저 컴포넌트(vendor)는 버전관리 되지 않아 코드공간을 줄일 수 있다.
패키지의 검색
composer 를 통해서 설치할 수 있는 수많은 패키지들을 packagist를 에서 키워드나 패키지명, 벤더의 이름을 기반으로 검색하여 원하는 패키지를 손쉽게 찾을 수 있다.
1. 로컬 컴포넌트 레지스트리 둘러보기
|
|
3. 문제해결
- 버전 출돌이 발생했을때
- composer.json 파일을 열어 충돌하는 컴포넌트의 버전확인
- 계속해서 충돌이 발생할때 composer.lock과 vendor를 지우고 재설치 한다.(composer install)
4. 오토로드
컴포저는 vendor 디렉터리 아래에 자신이 참조할 데이터베이스를 미리 만들어 놓는다.
이 데이터베이스는 클래스 이름과 파일 경로 간 매핑을 담고 있다.
vendor/autoload.php 를 이용해 데이터베이스를 메모리로 올린다.
composer.json 의 autoload 설정을 통해서도 할 수 있습니다.
오토로딩은 네임스페이스에 대한 디렉토리 매핑을 정의한다.
src 디렉토리는 vendor 디렉토리와 마찬가지로 프로젝트 루트 디렉토리에 존재한다.
src/Foo.php 파일은 Acme\Foo 클래스를 의미 한다.
autoload.php 파일을 include 하게 되면 인스턴스를 리턴받을 수 있고, 이를 이용해 추가적인 네임스페이스를 지정할 수도 있다.
4.1 동작 순서
public/index.php -> bootstrap/autoload.php -> vendor/autoload.php
4.2 원리
어떤 클래스가 동작할 때 다른 클래스를 참조하면, 메모리에 적제된 정보를 이용해 매핑된 파일을 찾아서 자동으로 require를 수행한다.
한글 매뉴얼 Composer-korean-docs