2012-09-03 4 views
19

새로운 프로젝트를 시작했습니다. 여기서는 Composer을 사용하여 일부 종속성을 처리하고 자동로드를 처리합니다.작곡가 자동 로더로 맞춤 코드 관리가 가능합니까?

저는 전체 공급 업체 디렉토리 대신 VCS에 composer.json 파일 만 보관하므로 여기에 코드를 추가하고 싶지 않습니다.

자동으로로드되도록 프로젝트 고유 코드를 어떻게 처리해야합니까?

답변

39

이것은 실제로 매우 간단합니다. 리포지토리에서 공급 업체 디렉토리를 제외하는 것이 올바른 방법입니다. 코드는 별도의 장소 (예 : src)에 저장해야합니다.

그 작곡가가 네임 스페이스 (들) 인식 확인하기 위해 autoload 속성을 사용 : 당신은 PSR-4 표준을 다음과 같은 클래스 이름을 가지고 가정

{ 
    "autoload": { 
     "psr-4": { 
      "Acme\\": "src/" 
     } 
    } 
} 

을, 그것을 작동합니다. 일부 클래스 이름의 예와 파일 시스템에 자신의 위치 아래 :

  • 한국 전기 \ 명령 \ HelloCommand -> SRC/명령/HelloCommand.php
  • 한국 전기 \ 양식 \ 타입 \ EmployeeType -> SRC/양식/Type/EmployeeType.php

각 클래스에 대한 네임 스페이스를 정의해야합니다. 여기에 한국 전기 \ 명령 \ HelloCommand의 예

<?php 

namespace Acme\Command; 

class HelloCommand 
{ 
} 

당신의 PHP 컨트롤러에 오토로더를 포함하는 것을 잊지 마십시오

<?php 

require 'vendor/autoload.php'; 

PSR-4 standard on PHP Framework Interoperability Group에 읽기.

composer.json을 편집하는 경우, 오토로더 클래스 경로를 새로 고치려면 install, update 또는 dump-autoload을 실행해야합니다.

+2

혹시라도 더미 클래스 또는 두 개의 간단한 코드 예제로 답변을 게시 할 수 있으십니까? 내가 링크 한 문서를 읽었고 내 디렉토리/네임 스페이스를 벤더 /에서 사용 된 것과 비교해도 클래스를로드 할 수 없습니다. – Letharion

+3

@Letharion이 내 대답을 업데이트했습니다. 잘하면이 도움이 될 것입니다. –